OpenCV3历程(7)——通过按键判断停止调试OpenCV程序时遇到的异常

如图所示,在运行OpenCV相关程序时,如果通过判断按键信息来停止调试时会发生异常:

char key = ' ';
while (key != 'q') {}
return 0;

OpenCV3历程(7)——通过按键判断停止调试OpenCV程序时遇到的异常

 原因:

读取位置 0x0000000000000010明显是你有一个指针是NULL没有初始化,你直接在上面+0x10就访问了,具体你要看你第二个截图对应的调用堆栈,找到上一层你的代码,然后仔细检查下每个指针变量。

解决办法:

在最后加destroyAllWindows();关闭窗口就行了。

这里是一位网友遇到的:

我也遇到了跟你一样的问题:ntdll.dll,0x5错误,读取位置0x10时发生访问冲突

程序正常运行完成,到析构阶段报错,最后检查到发现:

UMat需手动释放->UMat.release();

手动释放后错误消除。

正常来说Mat不需要手动release(); 会被自动释放。

所以我UMat也就没release(),但是UMat调用了opencl,涉及到GPU,故而可能比较特殊,需要手动释放。