Отладка исключения bad_alloc из веб-приложения .NET

Я конвертирую настольное приложение Visual C++ в веб-приложение .NET. При этом я попытался сохранить внутренние библиотеки DLL Visual C++, которые изначально использовались в настольном приложении. Пытаясь удалить глобальные переменные из этих dll, я столкнулся с проблемой с исключением bad_alloc. Это исключение, кажется, возникает случайно, и я пытаюсь точно определить его в коде нижнего уровня, используя множество попыток/уловов. Я пробовал следующее, но мне не повезло:

1) Включены исключения C++ из Debug->Exceptions. (Исключение перехвачено, однако стек вызовов бесполезен в поиске переменной, вызвавшей проблему, или даже функции). 2) Попытался создать правило утечки памяти для процесса веб-сервера отладчика VS в DebugDiag. (утечек не обнаружено).

Любые другие стратегии для отслеживания этого были бы чрезвычайно полезны!


person Alexis Leno    schedule 03.01.2013    source источник
comment
Вы включили исключения Win32?   -  person StarPilot    schedule 04.01.2013


Ответы (1)


Обычно оператор C++ new() вызывает функцию C malloc(). Оператор new выбрасывает bad_alloc, когда malloc() возвращает 0. malloc() может возвращать 0 из-за нехватки памяти или из-за повреждения кучи.

person brian beuning    schedule 03.01.2013
comment
Да, я понимаю, что это может быть причиной, однако это не помогает мне точно определить проблему! - person Alexis Leno; 04.01.2013
comment
Найти проблемы с повреждением кучи сложно, потому что проблема может быть в одном месте, но проявляться в каком-то несвязанном месте. - person brian beuning; 04.01.2013