我在~20000张图片中运行一个过程。它每次都在不同的地方崩溃,所以我决定调试它。 经过一些调试后,我意识到了这一点:
我只是创建一个虚拟函数来均衡图像,当它超出范围时,它不会释放所有内存。 我尝试过: equalizedImage.release()但结果相同。
关于做什么或者我没有正确管理的任何想法?
(使用Opencv版本2.4.9)
谢谢!
答案 0 :(得分:1)
文档并未指出src和dest可以是同一图像。
答案 1 :(得分:1)
我不想对此发表评论,但我想注意一些事情。
1)Windows'为此,无法完全信任任务管理器内存使用情况指示器。进程可以自由保留一些内存以供将来使用。
2)请发布泄漏的代码,以便我们可以正确地重现它。可能使用像Valgrind这样的工具可以检测到泄漏。至少这比任务管理器更好。
3)您是否考虑升级到OpenCV的最新版本以查看此行为是否消失?
4)我非常怀疑这与你的崩溃有关。
答案 2 :(得分:0)
您的代码很好,不应该导致任何泄漏。问题出在其他地方。但是,将openCV与您的程序错误地链接(例如,当您的程序是MD或其他错误配置时与MT链接)会导致释放cv :: Mat时出现问题,这是常见的问题。此问题通常出现在调试模式下,并在发布模式下消失。所以你可以尝试在调试模式下调试它。此问题可能会阻止Mat正确释放。
顺便说一句,1000个纪元后你的内存使用量是多少?