VirtualAlloc / Ex分配什么样的内存

时间:2018-05-24 17:02:51

标签: c++ memory-management win32-process

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

建议将不胜感激!

2 个答案:

答案 0 :(得分:1)

堆内存驻留在VirtualAlloc在后台分配的程序虚拟内存中。但是,问题是VirtualAlloc仅在称为页面的大块中分配内存,这使得用于一般内存分配变得不可行。

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

答案 1 :(得分:0)

这是不正确的:

  

我知道C / C ++风格的程序有内存部分,堆栈,堆,.text等。

此类部分仅通过系统系统上的链接和通过加载到其他系统来退出。此上下文中的节仅说明如何将应用程序的各个部分分组到内存中。程序运行时,它只有内存。

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