realloc函數使用規則

realloc函數使用規則如下:

realloc函數使用規則

1、realloc失敗的時候,返回NULL;

2、realloc失敗的時候,原來的內存不改變,不會釋放也不會移動;

3、假如原來的內存後面還有足夠多剩餘內存的話,realloc的內存=原來的內存+剩餘內存,realloc還是返回原來內存的地址; 假如原來的內存後面沒有足夠多剩餘內存的話,realloc將申請新的內存,然後把原來的內存數據拷貝到新內存裏,原來的內存將被free掉,realloc返回新內存的地址;

4、如果size爲0,效果等同於free()。這裏需要注意的是隻對指針本身進行釋放,例如對二維指針a,對a調用realloc時只會釋放一維,使用時謹防內存泄露;

5、傳遞給realloc的指針必須是先前通過malloc(), calloc(), 或realloc()分配的;

6、傳遞給realloc的指針可以爲空,等同於malloc。

realloc函數爲C語言函數。其功能爲先判斷當前的指針是否有足夠的連續空間,如果有,擴大mem_address指向的地址,並且將mem_address返回,如果空間不夠,先按照newsize指定的大小分配空間,將原有數據從頭到尾拷貝到新分配的內存區域,而後釋放原來mem_address所指內存區域,同時返回新分配的內存區域的首地址,即重新分配存儲器塊的地址。