【发布时间】: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