VirtualAlloc/Ex分配什么样的内存

What kind of memory does VirtualAlloc/Ex allocate

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

不胜感激!

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

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

这是不正确的:

I know that C/C++ style programs have memory sections, the stack, heap, .text, etc.

此类部分仅通过在系统系统上链接并通过在其他系统上加载而存在。此上下文中的部分仅说明应用程序的各个部分如何在内存中分组。当您的程序运行时,它只有内存。

像 VirtualAlloc 这样的函数只是简单地为进程分配页面。