【发布时间】:2013-05-17 05:12:08
【问题描述】:
在一个应用程序中,我必须分配两个每个 480 MB 的缓冲区。内存分配是使用 HeapAlloc 方法完成的。该应用程序在运行不多的应用程序的系统中运行良好。但是在其他应用程序也在运行的系统中,由于连续内存不可用,因此不会分配内存。即使内存空间(非连续)可用但未分配。
即使有非连续内存可用,也需要帮助分配两个 480 MB 的缓冲区。
【问题讨论】:
-
你不能。添加更多内存(交换或 RAM),或使用非连续容器,例如
std::deque。 -
你能通过使用 2 个内存映射文件获得类似的结果吗?此时,系统会管理内存,但您会看到一个扁平的、连续的块 IIRC。
-
@JimR:这与您从普通分配函数中获得的结果并没有太大不同,除了使用普通分配函数时系统内存映射页面文件并且还知道您实际上更愿意避免将更改写入磁盘。
-
@BenVoigt:我想到的好处是系统会为您管理内存问题。可能值得一试...
标签: c++ memory-management