куча — c ++ необработанное исключение — как отлаживать

У меня проблема при запуске тестового случая в режиме отладки: я получаю всплывающее окно с сообщением «Необработанное исключение в 0x7c812fd3 в Test.exe: 0xE0000003: 0xe0000003.». Код ломается в free.c:

void __cdecl _free_base (void * pBlock)
{
int retval = 0;

if (pBlock == NULL)
return;

RTCCALLBACK(_RTC_Free_hook, (pBlock, 0));

retval = HeapFree(_crtheap, 0, pBlock);
if (retval == 0)
{
errno = _get_errno_from_oserr(GetLastError());
}
}

в строке «retval = …» с _crtheap = 0x00df0000 и pBlock = 0x967c93d3. Стек вызовов разбивается на «kernel32.dll! 7c812fd3 ()» и еще одну запись ниже в стеке вызовов:
«> msvcr100d.dll! _free_base (void * pBlock = 0x967c93d3) строка 50 + 0x13 байт».

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

Что немного удивляет меня, так это то, что я не испытываю этого при запуске теста в режиме выпуска …

С уважением,
Свен

6

Решение

Вы пытались запустить эти тестовые сценарии под визуальным отладчиком студии?
Отладчик должен перехватить это исключение, и вы можете проверить стек вызовов и определить местонахождение проблемы.

-2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]