MSVC下new运算符的未知C ++异常

时间:2019-02-01 08:38:45

标签: c++ memory visual-c++ pinvoke new-operator

调用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抛出什么类型的异常?我该怎么做才能从中获取信息?

0 个答案:

没有答案