c - 我应该在 GlobalRealloc 之后释放全局内存吗?

标签 c winapi

我只是想检查一下我是否正确理解了 GlobalReAlloc 函数的含义。很快,GlobablRealloc 更改大小或内存对象或其属性。我有以下问题:

 HGlobal old_mem = GlobalAlloc(...);
 HGlobal new_mem = GlobalReAlloc(12345, old_mem, 0); // Should I free old_mem?
  1. 我应该在重新分配后释放旧的内存对象吗?据我了解,函数只是更改内存对象本身并返回更新的内存对象。如果我错了,请纠正我
  2. 如果重新分配失败,我应该释放旧内存对象吗?

最佳答案

  1. 不,如果函数成功,旧内存现在无效,内容被复制到新分配的区域,从现在开始你应该使用新指针。所以如果函数成功,不要释放旧内存

  2. 如果函数失败,则没有进行任何更改。这意味着旧指针仍然有效,您可以使用它。现在,如果你想释放旧指针,你可以。通常,程序现在的状态与您调用 GlobalReAlloc 之前的状态相同。

关于c - 我应该在 GlobalRealloc 之后释放全局内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43364802/

相关文章:

c - 在某些字符串的末尾获取垃圾值

c++ - 将结构写入和读取文件

Python:使用 Win32 COM Api 打开 Excel 工作簿

c - 如何在宏中为声明变量实现 ifdef?

c - 在大括号和没有大括号的列表中声明的值有什么区别

C 程序在输入字符后崩溃

c - jpeg header 结构中宽度和高度的位置

c++ - opencv 桌面捕获在大字体模式下仅返回 Windows 上的部分屏幕

winapi - 防止生成 WM_SETCURSOR 和 WM_NCHITTEST 消息

windows - 是否有用于 vista 的 API 来检测桌面是否全屏运行?