我知道C / C ++风格的程序有内存部分,堆栈,堆,.text等。但是当我使用VirtualAlloc时,它从哪里分配内存?我不认为这是堆,因为我可以使用HeapAlloc。
建议将不胜感激!
答案 0 :(得分:1)
堆内存驻留在VirtualAlloc在后台分配的程序虚拟内存中。但是,问题是VirtualAlloc仅在称为页面的大块中分配内存,这使得用于一般内存分配变得不可行。
由于这个原因,HeapAlloc管理已分配的页面,并且可以将多个分配连接到一个页面,这样您就不必为每个小的分配不必要地分配整个页面(通常是4KB,但这不是规则)。
答案 1 :(得分:0)
这是不正确的:
我知道C / C ++风格的程序有内存部分,堆栈,堆,.text等。
此类部分仅通过系统系统上的链接和通过加载到其他系统来退出。此上下文中的节仅说明如何将应用程序的各个部分分组到内存中。程序运行时,它只有内存。
像VirtualAlloc这样的函数只是为进程分配页面。