为什么我的 .exe 文件崩溃,但在调试和发布版本中工作正常?

Why does my .exe file crash, but works just fine in debug and release version?

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

我正在使用亚光 类 而不是 IPLimages。

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

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

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

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

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

不过,这是您代码中的错误,应该修复,例如通过使用 assert.

添加对空指针和越界访问的检查

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