什么是bad_alloc?为什么输出屏幕没有显示所有值
what is bad_alloc and why does output screen does not shows all the values
我编写了一个针对无限循环的程序,如下所示,并不断分配新的内存
#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双阵列。如书面,您的程序不会自行结束,除非它使用所有可用的内存。
至于缺乏早期值,我怀疑他们正在从显示屏窗口滚出显示缓冲区。
相关文章:
- Winapi:屏幕截图未显示在窗口中
- 如何在快板的屏幕中显示子位图的绘制?
- SFML 中的字体.信息不显示在屏幕上.显示的不是信息,而是点
- 如何使用 openGL 在屏幕上显示加载的纹理
- 如何使用方法覆盖在输出屏幕上显示堆栈整数值
- 如何使用TouchGFX在LCD屏幕上显示ADC值
- 为什么屏幕上显示了一半的三角形
- 如何在屏幕上显示对象列表?
- C++列出屏幕以在第二台显示器中显示图像
- 显示和隐藏Windows 10屏幕键盘(osk.exe)时遇到问题
- 将25个甚至整数存储到一个名为intlist的整数阵列中,然后在屏幕上显示数组,并在屏幕上显示名为fivintegers
- QML强制窗口将在第一个屏幕上显示
- 如何使用OpenGL在屏幕上显示三角形
- 从文本文件中读取行并显示在屏幕上
- 我的程序没有将字符显示在屏幕上
- 在屏幕上显示矢量
- 在同一屏幕上显示两个不同的对象
- 屏幕显示脚本中'.'令牌之前的预期非限定 id
- C / SFML:使用两个递归调用在屏幕上打印凸形形状仅显示第一个递归调用中的形状,而不是第二个
- 如果我使用的是迭代器,为什么在c++中没有屏幕显示呢