Как проверить повреждение памяти в C ++ - PullRequest
5 голосов
/ 02 апреля 2012

У меня есть проблема в моем проекте.Иногда выполнение завершается неудачно с ошибкой «unabe для доступа к месту чтения / записи xxxxx».Я знаю, что это ошибка повреждения памяти.Но как я могу отследить эту ошибку.Это происходит сбой при освобождении памяти переменной, если я прокомментирую эту строку, она обрабатывается нормально.То есть память для этой переменной уже освобождена.Раньше все работало нормально, недавно я добавил код, но ничего не изменил.Как я могу проверить повреждение памяти для этого.

Ответы [ 3 ]

7 голосов
/ 02 апреля 2012

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

В Windows: см. Здесь .

0 голосов
/ 02 апреля 2012

Если вы используете Windows, попробуйте winDbg. Это лучший и очень мощный.

0 голосов
/ 02 апреля 2012

Получив информацию, вам нужно будет просмотреть весь код, который вы недавно добавили (если это недавняя проблема), оценить и проверить каждую строку и посмотреть, не растоптали ли вы память. memcopy - это команда, которая может вызвать этот тип ошибки, если вы выделяете много для размера копируемого элемента.

Убедитесь, что вы удаляете свои объекты (указатели) только один раз.

...