雖然現在說這個。。多半沒有什麼意思。。但我的確在很長的一段時間不知道他的工作原理。。
所以隨便記錄下。。
它的原型是:
extern void * realloc(void * __ptr,size_t __size);
第乙個引數是為試圖更改大小的原堆檔案,size為新的記憶體大小。
1.如果記憶體減少,則僅改變下索引資訊,但並不代表被減少的部分記憶體還可以安全訪問,這己經釋放。
2.如果擴大記憶體空間,則返回情況如下:
(1),如果當前記憶體段後面擁有需要的記憶體空間,則直接擴充套件這段記憶體空間,返回原指標。
(2),如果當前記憶體段後面的空閒位元組不夠,那麼就使用堆中第乙個能夠滿足這一要求的記憶體塊,
將目前的資料複製到新的位置,並將原來的資料塊釋放掉,返回新的記憶體位置指標。
(3)如果申請失敗,返回null,此時原來的指標仍有效。、、
因此呼叫時會返回新的指標,應該判斷,而原來指標會釋放,不需要重新手動釋放,因此下面的使用方式不好:
ptr = realloc (ptr , new_size);
摘抄自:linux高階程式設計
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 使用詳解
realloc函式用來為ptr重新分配大小為size的一塊記憶體,看似很簡單,在使用過程中卻會發生各種錯誤。函式形式為 void realloc void ptr,size t new size 最近在網上檢視了一些資料,在glibc中沒有找到具體的實現 有人找到了可以發給我,ladd.cn gma...