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释放未被使用的内存空间