我正在用C ++编写一个应用程序级内存管理器,用于我正在开发的游戏。我的内存管理器在每个“游戏会话”开始时分配足够的内存,这样在游戏会话期间就不需要动态内存分配,这大大提高了性能。通过对“游戏对象”列表进行排序,使得它们按照它们驻留在应用程序的虚拟地址空间中的顺序进行更新,我能够在性能上获得另一个重大改进。所以这确实有助于减少一些缓存未命中。
现在我想更进一步,使其更加缓存友好。我意识到,对于Windows操作系统,每个应用程序(进程)都有自己的虚拟地址空间,映射到(非连续的)物理内存。但有没有办法可以请求连续的物理内存块供我的内存管理器使用? (并且在物理内存空间中保持连续?)。