C++ 函數 realloc 的用法

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,原空間未釋放。code

mem_address == NULL && newsize != 0

此時至關於函數malloc內存

注意

參數mem_address 必須是函數malloccallocrealloc返回的地址。class

參數newsize 應當不小於原長。call

相關文章
相關標籤/搜索