当我在 Debug模式下运行此代码时,没有出现异常,但在 Release模式下我收到此异常:
Unhandled exception at 0x768b4b32 in RealTimeSLT.exe: Microsoft C++ exception: cv::Exception at memory location 0x003de734..
为什么这个问题只有在发布时才会出现?如何解决?
FileStorage fs2(fileName, FileStorage::READ);
fs2.open(fileName, FileStorage::READ);
fs2["Mat"] >> Mat;
fs2["dMat"]>> dMat;
fs2.release();
最佳答案
假设您在 VS 中运行,选择“调试”->“异常”并单击“抛出异常时中断”
在调试器下运行应用程序,看看为什么抛出该异常以及它提示什么 - 这很可能与应用程序运行的环境不同。
如果您需要检查变量,那么发布构建会使这变得困难,因为优化器可能会使调试器感到困惑。您也许可以通过关闭发布版本中的优化来解决此问题。但是,如果是时间问题,这可能会隐藏问题。
另一个选项是捕获抛出的异常,然后记录其内部消息 - 这通常是一个名为“what()”或类似的函数。这很可能会指出实际问题。无论如何,您可能都想捕获此异常。
如果其未定义的行为导致发布和调试之间的差异,那么上面的内容可能不会那么有用。
关于c++ - Release模式下异常, Debug模式下不异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16649357/