1.main方法里面直接定义一个很大的数组的时候。可能会出现栈溢出:错误代码演示:


#include<stdio.h>


#include<stdlib.h>


voidmain()


{


    inta[1024 * 1024];


    intnum = 100;


    system("pause");


}


错误截图:


malloc,colloc,realloc内存分配,动态库,静态库的生成与调用_数组


2.在定义数组的时候要定义数组的长度,否则会出现错误。

(特例:在GCC编译器下,不会出现错误(由于标准不一样))。


3.打印而且赋值的是:


for (inti = 0; i < length;i++)


{


    printf("%d\n",a[i] = i);  //初始数组并打印


}


4.内存分配能够通过三个函数实现


A.void *malloc(size_t size)malloc仅仅管分配,不初始化内容(size:Bytes to allocate: 分配的字节数)


B.void *calloc(size_t,size_t size):分配内存,而且初始化内存信息为0,其有两个參数(num:Number of elements;size:Length in bytes of each element) ,第一个參数是,开辟的数量,第二个參数是每一个參数的大小。


C.void *realloc(void *memblock,size_t size);Reallocatememory blocks;用于分配内存.


memblock:Pointer to previously alloctedmemory block;


size:New size in bytes


比如:


int *p1 = (int*)malloc(sizeof(int)*10);//仅仅管分配。不初始化


int *p2 = (int*)calloc(10,sizeof(int));//calloc会进行内存清零




样例:


#include<stdio.h>


#include<stdlib.h>




intmain(intargc, char *argv[])


{


//仅仅管分配


    int *p1 = (int *)malloc(sizeof(int)* 10);


    //calloc会进行内存清零


    int *p2 = (int *)calloc(10, sizeof(int));


    printf("%p,%p", p1, p2);




    for (inti = 0; i < 10; i++)


    {


        p1[i] = i;


        p2[i] = i;


    }




    getchar();


    return 0;


}


5.realloc分配内存


#include<stdio.h>


#include<stdlib.h>




voidmain()


{


    //分配内存


    int *p = (int *)calloc(10,sizeof(int));


    printf("%p\n", p);//输出地址


    inti;


    for (i = 0; i < 10;i++)


    {


        //*(p + i)等价于p[i]


        *(p + i) = i;


    }




    //变长,第一个參数是指针地址。第二个參数表示的是数组的个数


    int *pnew = (int *)realloc(p,100000);


    //realloc.第一种情况,后面的内存没实用,就直接扩展变长


    //另外一种情况。后面的内存有人用,先分配新的长度,拷贝原来原来的内存,释放原来的内存


    printf("%p",pnew);


    for (inti = 10; i < 25000;i++)


    {


        *(pnew + i) = i;


    }




    system("pause");


    return 0;


}


6.新建项目dlllib


编写代码:


#include<stdio.h>


#include<stdlib.h>




voidgo()


{


    printf("Hello World\n" );


}


7.制作dll,右击项目à属性à配置属性à常规à分别改动配置类型(动态库.dll)和目标文件名称。


8.制作lib,右击项目à属性à配置属性à常规à分别改动配置类型(动态库.lib)和目标文件名称。


9.引入lib.lib的方式有


  A:.lib复制到源码所在的文件夹下。à通过代码引入.lib

代码是:


#pragma comment(lib,”test.lib”);  //当中test.lib就是要引入的.lib静态库(注意,也要将静态库相应的.h放到源文件所在的位置)。


  B:.lib复制到源码所在的文件夹下。

à通过配置的方式引入静态库。

方式是:


    右击项目à属性à配置属性à输入à附加依赖项(如现有依赖项加入的方式加入.lib静态库)。