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 这样的函数只是简单地为进程分配页面。
我知道 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 这样的函数只是简单地为进程分配页面。