为什么我的.exe文件崩溃了,但在调试和发布版本中工作得很好



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

我使用的是亚光类,而不是IPImages。

控制台应用程序的调试和发布版本可以工作,但是项目/发布文件夹中的.exe文件会崩溃。

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

我应该提到的是,发布版本也能正常工作,它只是生成几张图片后崩溃的.exe文件。

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

非正式地说,调试模式会在存储在内存中的每个对象周围添加一定量的内存。如果你愿意的话,有点像填充物。由于您的越界访问可能会在发布模式中产生分段错误,因此不会触发分段错误(更多详细信息)。

尽管如此,这是代码中的一个错误,应该进行修复,例如,通过使用assert添加对空指针和越界访问的检查。

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

最新更新