我知道 C/C++ 风格的程序有内存部分、堆栈、堆、.text 等。但是当我使用 VirtualAlloc 时,它从哪里分配内存?我不认为它是堆,因为我可以只使用 HeapAlloc。
建议将不胜感激!
最佳答案
堆内存驻留在您的程序虚拟内存中,由 VirtualAlloc 在幕后分配。然而,问题在于 VirtualAlloc 仅在称为页面的大块中分配内存,这使得它无法用于一般内存分配。
出于这个原因,有 HeapAlloc 管理分配的页面,并且可以将多个分配连接到一个页面中,这样您就不会不必要地为每个小分配分配整个页面(通常是 4KB,但这不是规则)。
关于c++ - VirtualAlloc/Ex分配什么样的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50514647/