C語言realloc函式解析

2021-07-22 18:24:38 字數 583 閱讀 1558

在網上查了很多資料,終於大概知道了這個函式的原理

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...