1.malloc()
头文件stdlib.h
分配内存,返回动态分配内存块的首字节地址。
可以把该地址赋给另一个指针变量,并使用指针访问这块内存,例如:
double * ptd;
ptd = (double *)malloc(n * sizeof(double));
//可使用ptd[i]来访问第i个元素,i<n。
用malloc()创建二维数组:
int p (*)[m];//p2指向一个内含m个某类型值的数组,p2[i]代表一个由m个此类型数构成的元素
p = (int (*)[m]) malloc(n * m * sizeof(int));//n*m数组
2.free()
free()的参数是之前malloc()返回的地址,释放malloc()分配的内存,防止内存泄漏。例如:
free(ptd);
free()所用的指针变量可以与malloc()的指针变量不同,但两个指针必须存储相同的地址,不能释放同一块内存两次。
3.exit()
判断内存是否分配失败,返回值为1.
返回值:EXIT_FAILURE:普通的程序结束;
EXIT_SUCCESS:程序异常终止。例如:
exit(EXIT_FAILURE);
4.calloc()
同malloc(),且把块中的所有位设置为0,例如:
long * newmem;
newmem = (long *)calloc(100,sizeof(long));
第一个参数为所需的存储单元数量,第二个参数是存储单元的大小。
5.存储类别和动态内存分配
程序内存分为静态存储,自动存储和动态分配。
静态存储类别的变量在程序开始时创建,结束时被销毁;
自动存储类别的变量在进入变量定义所在块时存在,离开块时销毁;
动态分配的内存在调用malloc()或相关函数时存在,调用free()后销毁。
(整理自:C Primer Plus)