当 "free"内存为零但备用内存仍然可用时,C++ 程序崩溃

标签 c++ out-of-memory

我有一个问题:

我需要将大约 260mb 的数据加载到结构中(使用 fread)。 Windows 资源管理告诉我,我有:

  • 正在使用 2346mb 内存
  • 待机时 1478mb 内存
  • 248mb 可用内存

但是,当我运行程序并加载数据时,程序会在没有剩余“空闲”内存的情况下崩溃。尚有大约 1200mb 的待机内存。

我想,当空闲内存为空时,它会自动将备用内存交换到磁盘并释放更多内存?

有什么办法可以避免这个问题还是我做错了什么?

最佳答案

仅仅因为内存可用并不意味着它是连续的。当您请求这样的大块时,您不太可能得到它,因为可用内存是碎片化的。

关于当 "free"内存为零但备用内存仍然可用时,C++ 程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5414239/

相关文章:

c++ - 32位应用程序用完了内存

c++ - SetWindowshookEx 有时在 dll 注入(inject)后不起作用

c++ - gcc编译失败,但msc++编译成功

Python - 打开和更改大文本文件

Java:为什么这个列表落后于我的游戏 “Out of Memory”

android - ImageView 内存不足错误问题

c++ - 从时间结构返回格式化字符串

c++ - 一般最小值和最大值 - C++

c++ - WaitForMultipleObjects 和 boost::asio 在多个 windows::basic_handle 上有什么区别?

java - 查找 Activity 代码中的内存泄漏,以释放内存使用并避免 OutOfMemory 异常