动态内存及相关函数

malloc —— 申请内存
calloc —— 初始化为0
realloc —— 修改内存大小(扩大,缩小)
free —— 释放内存,内存泄漏

malloc:
int *arr = (int ) malloc (nsizeof(int)) ;
malloc函数只调出申请的空间,返回所调出空间的首地址,需强转成需要的数据类型;

calloc:
动态申请100整型单元,并且每个单元值为0
int*arr = (int )malloc(100sizeof(int));
for(int i=0;i<100;i++)//
{
arr[i] = 0;
}
等同于
int *arr = (int ) calloc (100,sizeof(int));//把数组初始化为0
注:
memset(arr,1,100sizeof(int));//memset同样可以将数组置0,但这个函数仅限设0

realloc
发现原来申请的arr空间不足,申请更大的空间
int *brr = (int )malloc(200sizeof(int));//创建更大的空间
for(int i=0;i<100;i++)//复制原数据
{
brr[i] = arr[i];
}
free(arr);//释放原内存
//更新地址
arr = brr;
brr = NULL;

等同于
arr = (int * ) realloc(arr,200*sizeof(int));//**,arr为原地址,后面为申请的新的内存字节数

free:
使用free释放未被使用的内存空间

发布了13 篇原创文章 · 获赞 3 · 访问量 631

猜你喜欢

转载自blog.csdn.net/weixin_43873172/article/details/88579283