假设这种情况:我在C ++应用程序中引用了第三方库,但是我根本不希望第三方库使用我的物理内存。相反,我希望它仅从硬盘分配内存。我不知道第三方lib的源代码,但是它在Windows平台上运行,因此我认为可以使用Win32 API来控制内存管理。
我的问题是如何避免第三方lib从物理内存分配内存。
我走错了方向吗?有人可以帮助我吗?
PS:我正在使用Visual C ++ 2010。
最佳答案
对于常规的C ++程序或库,在Windows中没有“分配物理内存”或“从硬盘分配内存”之类的东西。所有“正常”分配请求均由虚拟内存提供服务。操作系统将决定在任何给定时刻哪个虚拟内存区域将驻留在物理RAM中以及哪个虚拟内存区域将驻留在磁盘上。您的程序(不是第三方库)都对此没有任何控制权。
换句话说,您似乎描述的“问题”实际上并不存在。在基于虚拟内存的经过适当设计的OS中,物理RAM始终被完全占用。空余的RAM是浪费的RAM-这是其背后的控制原则。这意味着在此类操作系统中实际上不存在“节省物理RAM”的概念:无论如何,物理RAM总是始终被100%占用。
为了将数据存储在虚拟内存中,操作系统首先必须确保将数据加载到物理RAM中。因此,无论使用与否,任何使用内存的库都会将其数据加载到物理RAM中。否则,该第三方库将根本无法运行。
关于c++ - 如何避免第三方lib(无源代码)从物理内存分配内存?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17005542/