我已经将我的一些破碎的代码减少到了:
// bad_alloc standard exception
#include <iostream>
#include <new>
#include <exception>
using namespace std;
int main()
{
int i;
cout << "dd: ";
cin >> i;
try
{
int* student = new int[i];
}
catch (...)
{
cout << "Bad memory allocation" << endl;
}
return 0;
}
我正在使用VS Express 13 Desktop。我遇到的问题是,如果键入-1
,则会在内部抛出bad_alloc异常,但不会被捕获。我知道它被抛出,因为输出结果如下:
First-chance exception at 0x7789C42D in test.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0046FB28.
真正的踢球者?如果将该代码复制并粘贴到另一个编译器(如http://www.cpp.sh),则可以正常工作。
我知道这似乎可能是一个VS错误,但我的问题是如何在此期间解决它?
我们如何优雅地捕获bad_alloc异常?