C語言動態內存學習筆記

一、malloc返回參數有兩種情況
1,當分配的內存池是空的時候返回一個NULL指針。
2,當可用內存無法滿足要求,malloc向操作系統請求,要求更多內存,如果它無法向malloc提供更多內存就返回一個NULL指針
二、free的參數
free的參數必須是NULL或malloc,calloc,realloc返回的值,向free傳遞一個NULL參數不會產生任何效果。
三、calloc與realloc的區別

void *calloc(unsigned int num,unsigned int size);
void realloc(void *ptr,unsigned int new_size);

1,calloc在返回指向內存的指針之前把他初始化位0。(malloc在聲明內存塊的時候並沒有初始化)calloc的參數包括所有元素的個數與每個元素的字節數,根據這些值自動計算出所需分配的內存。
2,realloc用於修改一個原來已經分配好的內存塊大小。它可以重新改變內存塊的大小,在改變之後原來的內存塊仍然保留,新增的內存增加在原來內存快的後面,新內存並沒用進行初始化。縮小內存塊的尾部被去掉,剩餘的值仍然保留。
注: 如果原來的內存無法改變大小,realloc會重新分配一塊正確大小的內存,並且原來的那塊內存將被複制在新的代碼塊。因此,使用realoc後,不能使用原來的指向內存的指針,而是用realloc返回的新指針!**

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