求解 内存分配(Memory Allocate) 问题
发布网友
发布时间:2022-04-20 23:45
我来回答
共2个回答
热心网友
时间:2023-10-24 06:37
1 include stdlib.h instead
2 calloc 分配m个n字节的内存空间,该内存空间被置0
malloc 分配制定直接长内存空间,空间内容未置0
realloc 中如果第一个指针为NULL,等效malloc,如果第一个指针不为空,但是size=0,等效free,指针
,大小都不为0则重新根据内存分配算法挑选合适内存
3 double free 是有可能造成core mp的,free 后置NULL即可,即使free(NULL)也不会出问题,
if(NULL!=p){free(p);p=NULL;} a better way !!!追问高手,这三个函数原型是什么,我想看看参数列表
追答1 void *calloc(size_t nmemb,size_t size);
2 void *malloc(size_t size);
3 void free(void*ptr);
4 void *realloc(void*ptr,size_t size);
热心网友
时间:2023-10-24 06:38
1)malloc.h 是的,VC 6.0 用 #include <stdlib.h> 就可以了。
2)写法都对。用 malloc 或 calloc 与个人习惯 有关(各人喜欢,c语言历史有这2函数)。realloc 用于 随时可以 增加 动态分配 或 减小 动态分配 空间。另2个函数无此功能。
3) 加条件判断做释放: if ( p) free(p);