调用new
运算符后,我面临一个未知异常。
经过很长的处理时间(10h)后,将调用new
运算符以存储输出结果。 此代码在从NET 4.5中运行的C#应用程序加载的DLL中实现。
我创建了一个MWE,并将下面的代码放入for循环中,但是它按预期方式抛出了std::bad_alloc
,而实际代码抛出了未知的异常并落入了catch(...)
语句中。
请注意,我正在使用Visual Studio 2013。
这是代码:
try {
char* output = new char[50000000];
} catch (const std::bad_alloc&) {
// Doesn't happen
printf("Bad Alloc\n");
} catch (const std::exception&) {
// Doesn't happen
printf("Standard Exception\n");
} catch (...) {
// Code falls here
printf("Unknown Exception\n");
}
如果没有人对此有解决方案,您至少可以提出一些调试想法吗?我曾考虑过在调用new
运算符之前使用Windows API调用来检查内存状态,但是我需要更多的想法。
MSVC可以给运算符new
抛出什么类型的异常?我该怎么做才能从中获取信息?