我正在尝试编写自定义内存管理器,现在我正在分配一个全局字节数组,如:
char g_retail_memory[512*MB];
当我查看Windows 7的资源监视器时,它报告已分配了大约512 MB的虚拟内存。有人可以解释为什么我没有物理记忆?如果我使用malloc()代替我获得物理内存。难道我做错了什么?在这种情况下,有没有一种在visual c ++下获得物理内存的正确方法?
答案 0 :(得分:2)
请参阅http://en.wikipedia.org/wiki/Virtual_memory
您分配的所有物理内存也将是虚拟内存,因为VM是系统向现代操作系统中的应用程序提供内存的方式。您可能看不到某些分配显示为物理的原因可能是内存从未被使用过,因此操作系统实际上并不需要为它找到物理内存,而是在第一次使用内存的时候。
请注意,如果操作系统需要另一个应用程序,虚拟内存的后备物理内存可能会“消失”。这有时被称为“交换”或“分页”。