2016-02-03 1 views
1

Я получаю сообщение об ошибке коррумпированного кучи после выхода из области видимости. Отладка утверждение терпит неудачу в debug_heap.cpp на _CrtlsValidHeapPointer (блок)Куча повреждена opencv

#include "opencv2\opencv.hpp" 
#include "opencv2\nonfree\features2d.hpp" 

using namespace cv; 

int main(int argc, char* argv[]) { 

    Mat img = imread(argv[1]); 

    SurfFeatureDetector detector(400); 

    vector<KeyPoint> keypoints; 

    detector.detect(img, keypoints); 

    return 0; 
} 

РЕДАКТИРОВАТЬ Fixed. Проблема заключалась в увязывании. Я использовал visual studio 2015 и opencv 2.49 x86 vc10. vc10 предназначен для визуальной студии 2010. Раньше какая-то программа в visual studio 2010 и работает отлично.

+0

Почему бы не написать новую версию здесь https://github.com/Itseez/opencv/issues? BTW, вы должны проверить img.data для не null, потому что imread может выйти из строя. –

+0

Внедрить проверку ошибок и использовать отладчик – Drop

+0

@SergeiNikulov Почему этот новичек беспокоит команду высокопрофессиональных программистов OpenCV? Вероятность ошибки 99,99% в коде. – Drop

ответ

1

Я получаю сообщение об ошибке с повреждением кучи после выхода из области видимости.

Если вы уверены, что ошибка повышается на }, то это не проблема в коде. Просто вы не правильно связываете OpenCV. Несоответствие между x64 и x86 или несоответствие между библиотекой времени выполнения C++. Поэтому просто убедитесь, что все хорошо связано.

+0

Совсем нет. Это просто означает, что он имеет неопределенное поведение в своей программе, и все может случиться. – Drop

+0

Я уверен, что это произошло в}, потому что я окружил внутренний код в другой области {}, и он не прошел} –

+0

@Drop: Я знаю, что мое предположение не основано на реальной подсказке. Но 99% случаев, когда кто-то сталкивается с этой ошибкой с OpenCV, это от плохой ссылки –

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