在網上查了很多資料,終於大概知道了這個函式的原理
void *realloc(void *ptr, size_t size);
作用:更改已經配置的堆記憶體空間,說白了在c語言中就是更改由malloc()函式分配的記憶體空間的大小。
當需要將已分配的記憶體減小時,則返回原指標,僅僅是對應索引的記憶體空間減小了
當需要將已分配的記憶體增大時:則分為以下3種情況:
1)如果當前記憶體段後面有需要的記憶體空間,則直接擴充套件這段記憶體空間,realloc()將返回原指標。
2)如果當前記憶體段後面的空閒位元組不夠,那麼就使用堆中的第乙個能夠滿足這一要求的記憶體塊,將目前的資料複製到新的位置,並將原來的資料塊釋放掉,返回新的記憶體塊位置。
3)如果申請失敗,將返回null,此時,原來的指標仍然有效。
不過有一點需要注意的是:如果呼叫成功,不管當前記憶體段後面的空閒空間是否滿足要求,都會釋放掉原來的指標,重新返回乙個指標,雖然返回的指標有可能和原來的指標一樣,即不能再次釋放掉原來的指標。
接下來請看**示例:
c語言中realloc 函式解析
realloc void ptr,size t size 更改已經配置的記憶體空間,即更改由malloc 函式分配的記憶體空間的大小。如果將分配的記憶體減少,realloc僅僅是改變索引的資訊。如果是將分配的記憶體擴大,則有以下情況 1 如果當前記憶體段後面有需要的記憶體空間,則直接擴充套件這段記憶...
C語言函式realloc
原型 extern void realloc void mem address,unsigned int newsize 語法 指標名 資料型別 realloc 要改變記憶體大小的指標名,新的大小 標頭檔案 include 有些編譯器需要 include 在tc2.0中可以使用alloc.h標頭檔案...
安全起見,小心使用C語言realloc 函式
在c語言中,良好的程式設計習慣要求乙個函式只做一件事,如果乙個函式實現了若干功能,可以說基本是乙個糟糕的設計。c語言 realloc 函式位於 stdlib.h 標頭檔案中,其原型為 void realloc void ptr,size t size void 意思是這個函式返回的是指標變數。voi...