Я сталкиваюсь с неизвестным исключением, которое выдается после вызова оператора 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
и что можетЯ делаю, чтобы получить информацию от тех?