c++ - VirtualAlloc/Ex分配什么样的内存

标签 c++ memory-management win32-process

我知道 C/C++ 风格的程序有内存部分、堆栈、堆、.text 等。但是当我使用 VirtualAlloc 时,它从哪里分配内存?我不认为它是堆,因为我可以只使用 HeapAlloc。

建议将不胜感激!

最佳答案

堆内存驻留在您的程序虚拟内存中,由 VirtualAlloc 在幕后分配。然而,问题在于 VirtualAlloc 仅在称为页面的大块中分配内存,这使得它无法用于一般内存分配。

出于这个原因,有 HeapAlloc 管理分配的页面,并且可以将多个分配连接到一个页面中,这样您就不会不必要地为每个小分配分配整个页面(通常是 4KB,但这不是规则)。

关于c++ - VirtualAlloc/Ex分配什么样的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50514647/

相关文章:

c++ - < : and :> mean when declaring a lambda? 做什么

c++ - 有没有办法在可变参数宏参数上使用 C++ 预处理器字符串化?

C++ 宏字符串连接

无法使用 MALLOC 分配内存

iphone - Xcode 仪器 : peak RAM of iPhone apps running in Simulator?

c++ - 如何在给定 PID 的情况下隐藏进程的控制台?

MFC 对话框错误中的 C++ 多线程

memory-management - Intel x86-64 CPU 访问多少页表来转换虚拟内存?

适用于 Audacity 的 Python pywinauto

win32-process - installutil.exe 不是有效的 win32 应用程序