bad_alloc uncatchable但适用于其他编译器

时间:2014-12-03 02:00:56

标签: c++ visual-c++

我已经将我的一些破碎的代码减少到了:

// 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异常?

0 个答案:

没有答案