为什么我的.exe文件崩溃了,但在调试和发布版本中工作得很好
Why does my .exe file crash, but works just fine in debug and release version?
我正在使用openCV 2.4.11技术创建一个控制台应用程序,尝试使用透视转换从单个图像创建30多个图像。
我使用的是亚光类,而不是IPImages。
控制台应用程序的调试和发布版本可以工作,但是项目/发布文件夹中的.exe文件会崩溃。
这种不同行为的可能原因是什么?
我应该提到的是,发布版本也能正常工作,它只是生成几张图片后崩溃的.exe文件。
使用Visual Studio编译器(可能还有其他编译器)时,此问题可能与发布模式和调试模式之间的内存布局差异有关。
非正式地说,调试模式会在存储在内存中的每个对象周围添加一定量的内存。如果你愿意的话,有点像填充物。由于您的越界访问可能会在发布模式中产生分段错误,因此不会触发分段错误(更多详细信息)。
尽管如此,这是代码中的一个错误,应该进行修复,例如,通过使用assert
添加对空指针和越界访问的检查。
我找到了一个解决方案,我只是从一开始初始化所有矩阵,.exe文件现在可以工作了(尽管我仍然不确定我第一次搞砸了什么)。感谢大家的贡献。
相关文章:
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 导入库可以跨dll版本工作吗
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 在clang++预处理器中确定gcc工具链版本
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 不同的Visual Studio版本中缺少.dll
- 用符号版本替换对函数的所有调用
- luaL_dofile在已知良好的字节码上失败,可以使用未编译的版本
- 正在解码MSVC 32位版本的程序集(作业).没有手术做什么
- 我需要分发哪些版本的可再分发文件
- CV_OCL_RUN宏如何在OpenCV(版本3.4.5)的goodFeaturesToTrack实现中工作?
- 在运行时读取 libstdc++ 版本
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- Vulkan SDK 版本 1.1.85.0 在 Kubuntu 18.10 上链接
- 如何正确实现与基类不同的版本?
- 从预处理器获取 Windows 版本(C++ Win32)
- 表达式 SFINAE:如何根据类型是否包含具有一个或多个参数的函数来选择模板版本
- Visual Studio 2008版本内部版本未装饰DLL导出
- 哪个QT版本/内部版本更稳定