0

假设这种情况:我在我的 C++ 应用程序中引用了第三方库,但我根本不希望第三方库使用我的物理内存。相反,我希望它只从硬盘分配内存。我不知道第三方库的源代码,但是由于它在 Windows 平台上运行,所以我认为可以使用 Win32 API 控制内存管理。

我的问题是如何避免第三方库从物理内存中分配内存。

我走错方向了吗?任何人都可以帮助我吗?

PS:我使用的是 Visual C++ 2010。

4

1 回答 1

5

对于常规的 C++ 程序或库,在 Windows 中没有“分配物理内存”或“从硬盘分配内存”之类的东西。所有“正常”分配请求都由虚拟内存提供服务。在任何给定时刻,由操作系统决定哪个虚拟内存区域将驻留在物理 RAM 中,哪些将驻留在磁盘上。您的程序和第三方库都无法对此进行控制。

换句话说,您似乎描述的“问题”并不存在。在基于虚拟内存的适当设计的操作系统中,物理 RAM 总是被完全占用。未占用的 RAM 是浪费的 RAM - 这是其背后的管理原则。这意味着“节省物理 RAM”的概念在这样的操作系统中并不真正存在:物理 RAM 总是被 100% 占用。

为了使数据存储在虚拟内存中,操作系统首先必须确保将数据加载到物理 RAM 中。出于这个原因,任何使用内存的库都会将其数据加载到物理 RAM 中,无论您是否想要它。否则,第三方库根本无法运行。

于 2013-06-09T01:33:37.647 回答