由于从数据库中检索大量数据,我的 C++ 应用程序偶尔会耗尽内存。它必须在 32 位 WinXP 机器上运行。
是否可以透明地(对于大多数现有代码)将数据对象交换到磁盘并仅按需将它们读入内存,所以我不限于32 位 Windows 为进程提供的 2GB?
我查看了VirtualAlloc和地址窗口扩展,但我不确定它是否是我想要的。
我还发现了这个 SO question,提问者在其中创建了一个文件映射并希望在其中创建对象。一个答案建议使用placement new
听起来对其余代码非常透明的方法。
这会阻止我的应用程序耗尽物理内存吗?我不完全确定,因为毕竟还有 32 位地址空间限制。或者这是尝试创建大量对象时会出现的另一种问题?