为什么我的.exe文件崩溃,但在调试和发布版本中运行良好?

时间:2015-03-30 08:03:09

标签: c++ visual-studio opencv image-processing release

我正在使用openCV 2.4.11技术创建一个控制台应用程序,我尝试使用透视转换从单个图像创建30多个图像。

我正在使用matt类而不是IPLimages。

控制台应用程序的调试版和发行版工作正常,但项目/发布文件夹中的.exe文件崩溃。

这种不同行为的可能原因是什么?

我应该提一下,发布版本也是有效的,只有.exe文件在生成几张图片后崩溃。

2 个答案:

答案 0 :(得分:3)

此问题可能与使用Visual Studio编译器(可能还有其他编译器)时发布和调试模式之间的内存布局差异有关。

非正式地说,调试模式会在存储在内存中的每个对象周围添加一定量的内存。如果你愿意,可以填充填充。由于您在发布模式下创建分段错误的越界访问可能会落入此填充区域,因此不会触发任何分段错误(more details)。

然而,这是您的代码中的错误,应该修复,例如通过使用assert添加对空指针和越界访问的检查。

答案 1 :(得分:0)

我找到了一个解决方案,我只是从一开始就通过初始化所有矩阵开始,而.exe文件现在正在工作(虽然我仍然不确定我第一次搞砸了什么)。感谢大家的贡献。