【发布时间】:2018-05-24 17:02:50
【问题描述】:
我知道 C/C++ 风格的程序有内存部分、堆栈、堆、.text 等。但是当我使用 VirtualAlloc 时,它从哪里分配内存?我不认为是堆,因为我可以使用 HeapAlloc。
建议将不胜感激!
【问题讨论】:
-
在虚拟地址空间中,这就是为什么它以virtual开头。请参阅VirtualAlloc documentation。
-
谢谢!最后一件事。如果我要分配大量内存来存储数据文件,我应该使用 VirtualAlloc 还是应该使用堆来代替?
-
非常大 == 虚拟。在现代操作系统(包括 Windows)上,它几乎(双关语)是无限的。
-
哈哈,好的,谢谢!
-
在 Windows 上,进程中的所有内存都是虚拟内存。在 C++ 中,堆栈(自动)和堆(动态)内存只是进程虚拟内存的子集。有关详细信息,请参阅 MSDN 上的 Thread Stack Size、Comparing Memory Allocation Methods 和 Managing Virtual Memory。
标签: c++ memory-management win32-process