Как отладить «ошибку отладочного утверждения» в VC ++ 6 - PullRequest
1 голос
/ 17 февраля 2009

Интересно, как отладить следующую ошибку:

Debug Assertion failure

Program: tomtoprog.exe
File: dbgheap.c
Line: 1044

Expression:_CrtIsValidHeapPointer(pUserData)
...

Я тихий новичок в разработке Windows с VC ++ 6 ... есть ли valgrind или что-то в этом роде? Код tomtoprog не написан мной, и он довольно грязный ... поэтому что-то вроде valgrind сделает мою жизнь проще ...

Заранее спасибо!

С уважением,

Zhengtonic

Ответы [ 2 ]

3 голосов
/ 17 февраля 2009

Похоже, у вас либо повреждение кучи, либо вы делаете двойное освобождение от одного и того же указателя. Если вы вломились в отладчик, какая последняя строка вашего кода вызывается, когда происходит утверждение?

Лучший способ проверить наличие подобных проблем - использовать средство проверки кучи страниц, например PageHeap.exe

Также смотрите этот связанный вопрос по переполнению стека

Повреждение кучи под Win32; как найти?

2 голосов
/ 17 февраля 2009

Нажмите «Повторить», и он сломается в отладчике. Это даст вам стек вызовов. Оттуда вы можете найти ту часть кода, которая виновата.

Подсказка: вы, вероятно, удаляете / освобождаете что-то дважды.

...