как исправить ошибку из-за повреждения кучи - PullRequest
0 голосов
/ 22 декабря 2011

У меня следующий callstak при сбое моего приложения (создайте через MSVC210 функцию сохранения дампа и winbdg во второй раз с помощью команды k):

0012c720 7d684c89 0012c93c 7d656a16 063acab8 ntdll!DbgBreakPoint
0012c728 7d656a16 063acab8 0000035c 035f0000 ntdll!RtlpBreakPointHeap+0x28
0012c93c 7d685892 035f0000 50000161 0000035c ntdll!RtlAllocateHeapSlowly+0x231
0012c9b0 7d65695e 035f0000 50000161 0000035c ntdll!RtlDebugAllocateHeap+0xaf
0012cbcc 7d62ba89 035f0000 40000060 0000035c ntdll!RtlAllocateHeapSlowly+0x41
0012cdfc 10308343 035f0000 40000060 0000035c ntdll!RtlAllocateHeap+0xe9f
0012ce14 1031697c 0000035c c8fa7bd5 0012deb0 MSVCR100D!_heap_alloc_base+0x53
0012ce5c 1031671f 00000338 00000001 00000000 MSVCR100D!_nh_malloc_dbg+0x2dc
0012ce7c 103166cc 00000338 00000000 00000001 MSVCR100D!_nh_malloc_dbg+0x7f
0012cea4 10319c5b 00000338 00000000 00000001 MSVCR100D!_nh_malloc_dbg+0x2c
0012cec4 10307db1 00000338 04f26388 0012cfac MSVCR100D!malloc+0x1b
0012cee0 65302a58 00000338 c8876569 00000070 MSVCR100D!operator new+0x11

Похоже, это связано с повреждением кучи.

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

Есть ли рекомендации по исправлению этой ошибки?

Спасибосерия

1 Ответ

4 голосов
/ 22 декабря 2011

Повреждение кучи может быть вызвано рядом причин, и такой код трудно обнаружить с помощью анализа кода.Наилучший возможный способ:

Выполнить код через Valgrind или Rational Purifyplus или любой другой анализ памятиинструменты, которые помогут вам определить, что именно не так, и укажут вам на это.

Посмотрите:
Как отладить ошибки повреждения кучи?

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

...