Неизвестное исключение C ++ для оператора, нового под MSVC - PullRequest
0 голосов
/ 01 февраля 2019

Я сталкиваюсь с неизвестным исключением, которое выдается после вызова оператора new.

Оператор new вызывается после длительного времени обработки (10 часов) для сохранения результатов вывода. Этот код реализован в DLL, которая загружается из приложения C #, работающего в .Net 4.5.

Я создал 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");
}

Если ни у кого нет решения для этого, не могли бы вы по крайней мере дать идеи для его отладки?Я думал об использовании вызовов Windows API для проверки состояния памяти перед вызовом оператора new, но мне нужно больше идей.

Какие исключения MSVC могут создавать для оператора new и что можетЯ делаю, чтобы получить информацию от тех?

...