首页 > 解决方案 > VirtualAlloc/Ex 分配什么样的内存

问题描述

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

建议将不胜感激!

标签: c++memory-managementwin32-process

解决方案


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

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


推荐阅读