C语言内存管理四大函数
1、malloc函数
语法:malloc(你要申请内存空间的大小),默认返回void*型指针,不过为了方便看,返回时转换一下类型
char * ptr;
ptr = (char *)malloc(sizeof(char)*4);
由于malloc函数不会帮你初始化申请的空间,所以需要你自己去初始化,也可以使用(string.h)库函数memset(void*,void,sizeof())进行初始化也可以用
2、calloc函数
语法与malloc完全一样,唯一的区别就是calloc会自动初始化,数字默认初始化为0,字符默认初始化为空格
char * ptr;
ptr = (char *)calloc(sizeof(char)*4);
当你第一次申请的空间不足需要第二次申请并且复制第一次的数据可以用string.h)库函数memcpy(void*,void*,int)进行拷贝当然也可以用
3、realloc函数
这个函数可以理解为在原来的基础上加x个数据,你就需要realloc(ptr,原来的个数+x),原来的数据保持不变
char * ptr;
ptr = (char *)malloc(sizeof(char)*2);
//对ptr进行一系列操作
ptr = (char *)realloc(ptr,sizeof(char)*4);
4、free函数
语法:void free(void *ptr);
char * ptr;
ptr = (char *)malloc(sizeof(char)*4);
free(ptr);
内存泄漏问题
1、隐式内存泄漏:malloc申请内存用完后没有及时释放
2、丢失内存块地址:把指向一块内存块的唯一指针指向其他地址,之前那个地址就没人直到在哪,也就无法释放了
为了避免内存泄漏,malloc(等申请空间的函数)与free函数成对出现