malloc,calloc与free函数
内存区域可以分为栈、堆、静态存储区和常量存储区,局部变量,函数形参,临时变量都是在栈上获得内存的,它们获取的方式都是由编译器自动执行的。 利用指针,我们可以像汇编语言一样处理内存地址,C 标准函数库提供了许多函数来实现对堆上内存管理,其中包括:malloc函数,calloc函数,free函数。使用这些函数需要包含头文件stdlib.h。 四个函数之间的有区别,也有联系,我们应该学会把握这种关系,从而编出精炼而高效的程序。 在说明它们具体含义之前,先简单从字面上加以认识,前2个函数有个共同的特点,就是都带有字符”alloc”,就是”allocate”,”分配”的意思,也就是给对象分配足够的内存,” calloc()”是”分配内存给多个对象”,” malloc()”是”分配内存给一个对象”,”free()”就比较简单了,”释放”的意思,就是把之前所分配的内存空间给释放出来。 void *calloc(size_t nobj, size_t size); 分配足够的内存给nobj个大小为size的对象组成的数组, 并返回指向所分配区域的第一个字节的指针; 若内存不够,则返回NULL. 该空间的初始化大小为0字节. char *p = (char *) calloc(100,sizeof(char)); void *malloc(size_t size);