【问题标题】:When attempting to use all available RAM, only 2 GB are used before the program terminates尝试使用所有可用 RAM 时,程序终止前仅使用 2 GB
【发布时间】:2017-12-04 21:06:09
【问题描述】:

当我执行以下代码时,任务管理器中的 RAM 使用量增加得非常快。但是,在大约不到 2 GB 时,它会严重变慢,然后我收到错误消息“此应用程序已请求运行时以不寻常的方式终止它。”

while(true){
   int *pointer66 = new int;
}

在 2 GB 标记处发生了什么? Windows 会限制它吗?

我首先认为它可能是防病毒软件,所以我禁用了它,但没有任何作用。

【问题讨论】:

  • 你是编译成 32 位还是什么的?
  • 内存管理器可能无法处理这么多微小的分配,而且由于碎片化,在存储中找到空闲空间变得越来越困难。
  • 哪个版本的 windows?
  • 完整的程序?因为我看不到你如何处理 std::bad_alloc?
  • @user4581301 即使是最简单的分配器也很难通过分配相同大小的对象来创建碎片内存,特别是因为根本没有取消分配;-)。

标签: c++ visual-c++ memory-management memory-leaks ram


【解决方案1】:

根据您的最后一条评论,该程序可能由于未处理的 C++ 异常而失败。 Windows 并不完全了解失败的原因,因此它只会报告异常退出。

【讨论】:

    猜你喜欢
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 2016-09-21
    • 1970-01-01
    • 2011-07-22
    • 2013-01-30
    • 1970-01-01
    相关资源
    最近更新 更多