函数返回的时候在Debug下报错 Release下正常,为什么

C++语言 码拜 9年前 (2016-05-27) 1527次浏览
代码如下

int FindArea(Mat MatIn,Mat &MatResult)
{
	//初始化
	vector<vector<Point> > contours;
	vector<Vec4i> hierarchy;
	//寻找轮廓
	findContours(MatIn, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);
	//筛选区域
	for (int i = 0;i < contours.size();i++)
	{
		double dArea = contourArea(contours[i]);
		if (dArea >= 20)
		{
			drawContours(MatResult, contours, i, 255, CV_FILLED, 8, hierarchy);
		}
	}
	//imshow("2", MatResult);
	//waitKey(0);
	return 0;
}

这个函数在Debug下最后return会报错,但是release下正常,怎么回事啊

解决方案

20

debug模式有些异常是什么被捕获并弹出提示..
但是在release下就没有这些了.
说明程序有bug.
你这种还好找错误, 最怕的是debug无错, release有错, 这样调试起才麻烦, 原因是release会做代码优化.

40

可能是你越界写入了,破坏了在变量周围的debug调试信息,导致return的时候有局部变量需要析构而出错

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明函数返回的时候在Debug下报错 Release下正常,为什么
喜欢 (0)
[1034331897@qq.com]
分享 (0)