2009-09-19 113 views
0

當relloc必須將分配的內存調整爲更大的大小時,relloc的行爲如何,必須在單獨的內存區域中完成,因爲請求的內存量可以在現場調整大小。原始內存是否被relloc自動釋放(我會這麼認爲)還是必須由程序員完成(不太可能)?調整大小時的relloc行爲

回答

5

是的,realloc自動處理釋放原始內存。如果內存塊可以調整大小,那麼realloc會這樣做。如果不是,它將分配一個足夠大的新內存塊,將數據從舊塊複製到新塊,並釋放舊塊。你不必擔心自己釋放它。

如果realloc失敗(例如您請求的內存太多而且分配不了太多),那麼原始內存爲而不是已釋放。如果你不小心,可能會泄漏內存 - 如果realloc由於失敗而返回NULL,並且不保留指向原始內存塊的指針,則該內存將保持分配並泄漏。

相關問題