2013-11-14 5 views
0

я могу скомпилировать мой код, но когда я пытаюсь запустить его, я получаю эту ошибку:ошибка в Visual Studio 2010/коррупции кучи

This may be due to a corruption of the heap, which indicates a bug in .exe file or any of the DLLs it has loaded

я пытался отладить ее, но странно, что он не независимо от того, где я поставил точку останова я получаю эту ошибку снова :(

кто-нибудь знает, что это проблема?

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

#define CV_HOUGH_GRADIENT 3; 
Mat Valv; 
    if(sumValv[0] > sumValv[0]){ 
     vector<Vec3f> circles; 
     HoughCircles(Valv, circles, 3 , 1, Valv.rows/8, 200, 100, 0, 0); 
} 

Я работаю с библиотекой opencv, и я собираюсь обнаружить круги на изображении с помощью функции HoughCircles. я получаю сообщение об ошибке в строке HoughCircles ... ошибку выделения памяти :( я heve не знаю, что является причиной ...

+1

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

+1

В дополнение к хорошему совету, предоставленному ComicSansMS, используете ли вы какие-либо DLL-файлы в своем приложении? Если это так, убедитесь, что все они скомпилированы с помощью Visual Studio 2010, и вы не смешиваете Debug и Release. Я имею в виду, что также плохо использовать dll Release в приложении Debug или наоборот. – drescherjm

+0

@Subhajit: Спасибо, я очистил код, и он работает сейчас :) – user2758510

ответ

4

отладочного времени выполнения Visual C++ вставляет special character sequences между выделенными блоками памяти. Если он обнаруживает, что один из этих волшебных паттернов был перезаписан, он сообщает об этом как обрушение кучи.

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

Убедитесь, что вы проверяете свой код для доступ к неограниченной памяти, который может привести к тому, что запись за пределами записи. Инструменты диагностики памяти, такие как AppVerifier или VTune, могут помочь устранить проблему, но в целом эти ошибки довольно неприятны для отладки.

Смежные вопросы