我只是想检查一下我是否正确理解了 GlobalReAlloc
函数的含义。很快,GlobablRealloc
更改大小或内存对象或其属性。我有以下问题:
HGlobal old_mem = GlobalAlloc(...);
HGlobal new_mem = GlobalReAlloc(12345, old_mem, 0); // Should I free old_mem?
- 我应该在重新分配后释放旧的内存对象吗?据我了解,函数只是更改内存对象本身并返回更新的内存对象。如果我错了,请纠正我
- 如果重新分配失败,我应该释放旧内存对象吗?
最佳答案
不,如果函数成功,旧内存现在无效,内容被复制到新分配的区域,从现在开始你应该使用新指针。所以如果函数成功,不要释放旧内存
如果函数失败,则没有进行任何更改。这意味着旧指针仍然有效,您可以使用它。现在,如果你想释放旧指针,你可以。通常,程序现在的状态与您调用
GlobalReAlloc
之前的状态相同。
关于c - 我应该在 GlobalRealloc 之后释放全局内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43364802/