2017-04-12 94 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之前的状态相同。

相关问题