2017-04-12 39 views
1

我只想檢查我是否正確理解了GlobalReAlloc函數的含義。不久,GlobablRealloc更改大小或內存對象或其屬性。我有以下問題:我應該在GlobalRealloc之後釋放全局內存嗎?

HGlobal old_mem = GlobalAlloc(...); 
HGlobal new_mem = GlobalReAlloc(12345, old_mem, 0); // Should I free old_mem? 
  1. 我應該釋放舊的內存對象reallocing後?正如我理解的功能只是改變內存對象本身並返回更新的內存對象。請糾正我,如果我錯了
  2. 我應該在失敗的重新分配情況下釋放舊的內存對象嗎?

回答

4
  1. 沒有,如果函數成功,舊的內存現在是無效的,內容被複制到新分配的區域,你應該從現在起使用新的指針。所以如果功能成功,不要釋放舊的內存

  2. 如果該功能失敗,則不做任何更改。這意味着舊指針仍然有效,您可以使用它。現在,如果你想釋放舊的指針,你可以。通常,程序的狀態現在與您稱爲GlobalReAlloc之前的狀態相同。

相關問題