C++ 函式 realloc 的用法

Zack發表於2019-05-10
void * realloc(void * mem_address, unsigned int newsize)

功能

先判斷當前指標是否有足夠的連續空間:

  • 如果有,擴大mem_address指向的地址,返回mem_address
  • 如果沒有,先按newsize指定的大小分配空間,將原資料從頭到尾拷貝到新分配的記憶體區域,而後釋放原來的mem_address所指記憶體區域(這是自動的),同時返回新分配記憶體區域的首地址。

引數取值的幾種情況

mem_address != NULL && newsize == 0

此時返回NULL,原空間自動釋放。

mem_address != NULL && newsize != 0 // 且空間分配失敗

此時返回NULL,原空間未釋放。

mem_address == NULL && newsize != 0

此時相當於函式malloc

注意

引數mem_address 必須是函式malloccallocrealloc返回的地址。

引數newsize 應當不小於原長。

相關文章