Ошибка при отладке «Ошибка отладки. Обнаружено повреждение кучи» - PullRequest
1 голос
/ 29 марта 2011

Я использую Visual Studio 2005. При отладке кода я получаю следующее сообщение об ошибке, и после этого добавляется разрыв,

Ошибка отладки!Программа: - Обнаружено повреждение кучи: после нормального блока c # 2368 в 0x01d21e30.CRT обнаружил, что приложение записало память после завершения буфера кучи.

Выше ошибки появляется в строке

delete values[i];

, где values - вектор (const wchar_t *).

Кто-нибудь знает, откуда эта ошибка?

1 Ответ

0 голосов
/ 29 марта 2011

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

Вы можете использовать std::wstring вместо обычных буферов, что избавит вас от необходимости управлять своими буферами.Проверяйте каждую операцию записи в буферы.

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

Как и другиеРекомендуется также позаботиться о сопоставлении выделения и освобождения:

  • new [] -> delete []
  • new -> delete
  • malloc -> free (что являетсяC и обычно не особенно полезен в C ++)
...