什么是bad_alloc?为什么输出屏幕没有显示所有值

what is bad_alloc and why does output screen does not shows all the values

本文关键字:屏幕 显示 输出 为什么 bad alloc 什么      更新时间:2023-10-16

我编写了一个针对无限循环的程序,如下所示,并不断分配新的内存

#include<iostream>
using namespace std;
int main()
{
     for (int i = 0; ; ++i)
    {
        double* x = new double[2000];
        *x = i * 2.5;
        cout << i <<"  "<< *x << endl;
    }
    return 0;
}

它成功运行,最后说bad_alloc。

133415  333538
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

我认为这没有更多的记忆。请告诉我我认为正确的事。而且输出屏幕也没有显示零的所有值,而是从133125开始。为什么这样?

是的,您用完了记忆。您目前正在每次无尽循环的迭代中分配一个新的2000双阵列。如书面,您的程序不会自行结束,除非它使用所有可用的内存。

至于缺乏早期值,我怀疑他们正在从显示屏窗口滚出显示缓冲区。