動態內存及相關函數

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釋放未被使用的內存空間

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章