【发布时间】:2013-05-20 12:17:23
【问题描述】:
当我在调试模式下运行这段代码时没有出现异常,但在发布模式下我得到了这个异常:
RealTimeSLT.exe 中 0x768b4b32 处未处理的异常:Microsoft C++ 异常: cv::Exception at memory location 0x003de734..
为什么这个问题只在发布时出现?我该如何解决??
FileStorage fs2(fileName, FileStorage::READ);
fs2.open(fileName, FileStorage::READ);
fs2["Mat"] >> Mat;
fs2["dMat"]>> dMat;
fs2.release();
【问题讨论】:
-
OpenCV cv::FileStorage 类在无法打开文件时抛出异常。捕捉该异常并告诉用户选择另一个文件是明智的。或者在代码中使用文件的正确路径名。
-
你不需要调用
open()作为之前已经使用指定参数调用它的行。基本上,您现在正在打开、关闭和重新打开文件。 -
如果路径不是明确的但相对于工作目录,当你运行可执行文件时它不会找到它是一个不同的目录。有时 Debug 和 Release 使用不同的工作目录。检查项目配置。
-
在 VS 调试版本中,未初始化的裸指针通常会代表您初始化为 null。如果您的代码中有任何裸指针忘记初始化为 null,它们将指向发布版本中的垃圾位置,取消引用将是未定义的行为。
标签: c++ release-mode