1

我正在尝试编写一个自定义内存管理器,现在我正在分配一个全局字节数组,例如:

char g_retail_memory[512*MB];

然后,当我查看 Windows 7 的资源监视器时,它报告已分配了大约 512 MB 的虚拟内存。有人可以解释为什么我没有获得物理记忆吗?如果我使用 malloc() 代替,我将获得物理内存。难道我做错了什么?那么在visual c++下有没有正确的获取物理内存的方法呢?

4

1 回答 1

2

http://en.wikipedia.org/wiki/Virtual_memory

您分配的所有物理内存也将是虚拟内存,因为 VM 是系统向现代操作系统中的应用程序提供内存的方式。您可能看不到某些分配显示为物理内存的原因可能是内存从未被使用过,因此操作系统实际上并不需要为它找到物理内存,但会在/如果首次使用内存时找到。

请注意,如果操作系统需要它用于另一个应用程序,虚拟内存的支持物理内存可以稍后“消失”。这有时被称为“交换”或“分页”。

于 2011-03-19T19:18:34.060 回答