Как определить, повреждают ли указатели адрес памяти?
Этот раздел применим к:
Выпуск |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
![]() |
![]() |
![]() |
Только машинные коды |
![]() |
Pro, Premium и Ultimate |
![]() |
![]() |
![]() |
Только машинные коды |
![]() |
Описание проблемы
Возможно, один из указателей повреждает память по адресу 0x00408000. Как определить, что происходит в этой точке?
Решение
Проверка целостности кучи
- В большинстве случаев повреждение памяти происходит из-за повреждения кучи. Используйте программу глобальных флагов (gflags.exe) или pageheap.exe. Дополнительные сведения см. в разделе https://support.microsoft.com/default.aspx?scid=kb;ru-ru;286470.
Поиск места изменения адреса памяти
Задайте точку останова данных по адресу 0x00408000. Дополнительные сведения см. в разделе Практическое руководство. Установка точки останова для данных (только машинный код).
При попадании в точку останова используйте окно Память для просмотра содержимого памяти начиная с адреса 0x00408000. Дополнительные сведения см. в разделе Окно памяти.
См. также
Основные понятия
Вопросы и ответы по отладке машинного кода