c++ - malloc() 与 HeapAlloc()

标签 c++ winapi malloc

malloc() 和 HeapAlloc() 有什么区别?据我了解 malloc 从堆中分配内存,就像 HeapAlloc 一样,对吧?

那么有什么区别呢?

谢谢!

最佳答案

实际上,malloc()(和其他 C 运行时堆函数)依赖于模块,这意味着如果您在一个模块(即 DLL)的代码中调用 malloc(),那么您应该在以下代码中调用 free()相同的模块,否则您可能会遭受一些非常严重的堆损坏(这已经有据可查)。将 HeapAlloc() 与 GetProcessHeap() 一起使用而不是 malloc(),包括重载 new 和 delete 运算符以使用它们,允许您在模块之间传递动态分配的对象,并且不必担心如果内存是在代码中分配的内存损坏一旦指向内存块的指针被传递到外部模块,一个模块并在另一个模块的代码中释放。

关于c++ - malloc() 与 HeapAlloc(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8224347/

相关文章:

c++ - c++ 方法头部的可选函数

winapi - 如何防止 MFC 中基于 CScrollView/CFormView 的类中的滚动条 (Windows Mobile 6)

c++ - SendInput() 不等于在 C++ 键盘上手动按键?

c - Malloc 指针参数失败

c - 释放变量 malloc 并在 c 中的函数中返回?

c++ - 常量正确性与非变异集合的混淆

c++ - 我无法设置 opencv 库的编译器路径。

c - Malloc 基于现有文件的文件缓冲区大小

c++ - TeamViewer 如何以编程方式在 Windows 上模拟 Ctrl-Alt-Del?

ruby - Win32 - 可以枚举属于调用线程的窗口吗?