有趣的 realloc 函式

2021-06-06 19:49:56 字數 467 閱讀 7234

在 c 語言中,我們最熟悉的函式排行榜上,malloc 和 free 想必名列前茅,而 realloc 則可能就要靠後了。不過你知道嗎,有了 realloc 函式,你甚至可以不使用 malloc 或者 free,而是由它一力承擔。

該函式的原型如下:

void* realloc(void* ptr, size_t size);
其本職工作,乃是在 ptr 引數所指向的記憶體塊出現容量不足時進行重新分配,並保證其中內容不變。

不過,函式的規範指出,ptr 引數可以為 null。在這種情況下,realloc 的作用其實就相當於 malloc;另外,在 ptr 引數不為 null,但 size 引數為 0 的情況下,其作用就相當於 free。

如果你在做類似於 64kb 程式競賽這樣的工作時,為節省每乙個位元組而絞盡腦汁,不希望映像的 iat 中無謂地多增加匯入函式,這個做法就可以略盡綿薄之力。怎麼樣,是不是很好玩?

realloc函 realloc函式用法

realloc 用過很多次了。無非就是將已經存在的一塊記憶體擴大。char p malloc 1024 char q realloc p,2048 現在的問題是我們應該如何處理指標 p。剛開始按照我最直觀的理解,如果就是直接將 p null 到最後只需要釋放 q的空間就可以了。因為最近在做個封裝。結...

realloc函 realloc函式使用規則

realloc函式使用規則如下 1 realloc失敗的時候,返回null 2 realloc失敗的時候,原來的記憶體不改變,不會釋放也不會移動 3 假如原來的記憶體後面還有足夠多剩餘記憶體的話,realloc的記憶體 原來的記憶體 剩餘記憶體,realloc還是返回原來記憶體的位址 假如原來的記憶...

realloc函式的用法

realloc void ptr,size t size 更改已經配置的記憶體空間,即更改由malloc 函式分配的記憶體空間的大小。如果將分配的記憶體減少,realloc僅僅是改變索引的資訊。如果是將分配的記憶體擴大,則有以下情況 1 如果當前記憶體段後面有需要的記憶體空間,則直接擴充套件這段記憶...