2010-07-12 1 views
1

Я делаю много ошибок в тестовой программе !!!Возможно, это связано с повреждением кучи, что указывает на ошибку в cvector.exe или на любую из загруженных DLL-файлов.

отладки ЦСИ: http://www.cppblog.com/Files/mymsdn/cvector-windows-has-triggered-a-breakpoint-in-cvector.zip

правая версия: http://www.cppblog.com/Files/mymsdn/cvector-svn-version-10.zip

Я пытаюсь написать версию языка C вектора струкции.

Если я попробую запустить (в Microsoft Visual Studio 2008 по умолчанию сокращен CTRL + F5) мой код. Он может выполняться как правильный логический вывод результата.

Но если я попробую запустить его в режиме отладки (в Microsoft Visual Studio 2008 по умолчанию сокращен F5). Это вызовет проблемы: (это из окна вывода, а также имеет предупредительное рамку, чтобы сообщить об этом)

КУЧА [cvector.exe]: КУЧА: Свободный блок Heap 393168 изменен на 393190 после того, как он был освобожден Windows вызвала точку останова в cvector.exe.

Это может быть связано с повреждением кучи, что указывает на ошибку в cvector.exe или на любую из загруженных DLL-файлов.

Это может быть связано с тем, что пользователь нажал кнопку F12, в то время как cvector.exe имеет фокус.

Выходное окно может содержать больше диагностической информации.

error http://www.cppblog.com/images/cppblog_com/mymsdn/3630/o_windows-has-triggered-a-breakpoint-in-cvector.png

+0

Вам нужно будет предоставить нам примерный код или дополнительную информацию, если мы вам поможем. – SoapBox

+0

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

+0

Смотрите это: http://stackoverflow.com/a/5035063/908336 –

ответ

1

Проверьте параметры отладки. Отключите «отладки неуправляемого кода» и «отладка SQL Server».

Это работало для меня, когда я получал это с компонентами Oracle. Если бы я продолжал нажимать «Продолжить», ошибки прорыва не было, и программа продолжалась. Отключение этих параметров отладки позволяет продолжать работу, и программа работает сейчас.

+9

Это не заставило ошибку уйти, она просто спрятала ее под ковриком! Все, что вы делали, это отключить функцию в отладчике, которая предупреждает вас, когда вы испортили свою кучу - коррупция все еще существует, ожидая, что мина будет взрываться, когда другой код попытается использовать эту область кучи. – Crashworks

4

Эта ошибка означает, что вы написали в адрес памяти, что вы на самом деле не «собственный» — например, Вы писали в памяти после того, как он был освобожден, или за пределами региона, вы фактически наделяются new или malloc, или через указатель, который был просто ошибочным.