gpt4 book ai didi

c++ - 如何避免第三方库(无源代码)从物理内存分配内存?

转载 作者:太空宇宙 更新时间:2023-11-04 16:20:47 28 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

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

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

关于c++ - 如何避免第三方库(无源代码)从物理内存分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17005542/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com