OpenCV中文网站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 安装 配置
查看: 1044|回复: 9
打印 上一主题 下一主题

请教MFC 使用 Mat 内存泄漏问题。

[复制链接]
跳转到指定楼层
1#
发表于 2017-4-27 11:34:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jetluo 于 2017-4-27 14:28 编辑

在MFC开发过程中使用opencv ,只要引入Mat,就会出现内存泄漏。
测试程序很简单,基于dialog的程序。在OnBnClickedOk()中引入Mat,关闭窗口,即出现内存泄漏。d:1.jpg
(发不了图?)


void CTestOpenCVMemLeakDlg::OnBnClickedOk()
{
//        cv::Mat mat1;

        CDialogEx::OnOK();
}


分享到:  QQ好友和群QQ好友和群
收藏收藏
2#
发表于 2017-4-27 21:36:11 | 只看该作者
你具体的内存泄漏,体现在什么地方?
3#
 楼主| 发表于 2017-4-28 09:25:28 | 只看该作者
本帖最后由 jetluo 于 2017-4-28 09:27 编辑

发不了图。
如果加入cv::Mat mat1; 退出时,VS输出窗口出现:
Detected memory leaks!
Dumping objects ->
{152} normal block at 0x007CF698, 30 bytes long.
Data: <      |   |     > 00 00 00 00 A8 F6 7C 00 AF F6 7C 00 00 00 00 00
{151} normal block at 0x007CF608, 77 bytes long.
Data: <      |     (   > CD CD CD CD 08 F6 7C 00 00 00 00 00 28 00 00 00
{150} normal block at 0x007CF580, 74 bytes long.
Data: <              | > CD CD CD CD CD CD CD CD CD CD CD CD 80 F5 7C 00
{149} normal block at 0x007CF4F8, 73 bytes long.
Data: <      |     (   > CD CD CD CD F8 F4 7C 00 00 00 00 00 28 00 00 00
{148} normal block at 0x007CF468, 81 bytes long.
Data: <    h |     (   > CD CD CD CD 68 F4 7C 00 00 00 00 00 28 00 00 00
{147} normal block at 0x007CF3E0, 73 bytes long.
Data: <              | > CD CD CD CD CD CD CD CD CD CD CD CD E0 F3 7C 00
{146} normal block at 0x007CF350, 81 bytes long.
Data: <            P | > CD CD CD CD CD CD CD CD CD CD CD CD 50 F3 7C 00
{145} normal block at 0x007CEE58, 76 bytes long.
Data: <    X |     (   > CD CD CD CD 58 EE 7C 00 00 00 00 00 28 00 00 00
Object dump complete.
程序“[2748] TestOpenCVMemLeak.exe”已退出,返回值为 0 (0x0)。
有内存泄漏。

如果去掉cv::Mat mat1;
则:
线程 0xf8c 已退出,返回值为 0 (0x0)。
程序“[6168] TestOpenCVMemLeak.exe”已退出,返回值为 0 (0x0)。

没有内存泄漏。
4#
发表于 2017-5-3 22:27:56 | 只看该作者
这个问题大概10年前就在论坛里面讨论过,我那时还用MFC,你可以搜索一下我的帖子。问题的主要原因是OpenCV里面存在一些静态变量的初始化的过程和MFC的有冲突,当时我还跑到微软公司MFC的邮件组里面去聊,一帮大牛给了一些意见和结果,你也可以搜索一下。
5#
发表于 2017-5-3 22:58:21 | 只看该作者
ollydbg23 发表于 2017-5-3 22:27
这个问题大概10年前就在论坛里面讨论过,我那时还用MFC,你可以搜索一下我的帖子。问题的主要原因是OpenCV ...

我最近在AnswerOpenCV上也看到有人问这个问题,但是我不是很理解。因为我一直沿用shiqiyu的CVVIMAGE的方法,目前没有出现冲突的情况。
6#
发表于 2019-10-19 09:54:04 | 只看该作者
楼主,这个问题你怎么解决呀,我也遇到这个问题了
7#
发表于 2019-10-31 20:38:13 | 只看该作者
你可以不要在事件驱动里面声明Mat呀。
实际上如果使用QT写的话,这种写法直接编译都不通过。
8#
发表于 6 天前 | 只看该作者
我给大家找到了大概十几年前在MFC的新闻组里面我的提问,以及几个MFC大牛的回复。都是关于OpenCV内存泄漏问题的内容。



有兴趣大家自己去看。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站  

GMT+8, 2019-11-14 17:13 , Processed in 0.040116 second(s), 15 queries .

Powered by X3.4

© 2001-2017

快速回复 返回顶部 返回列表
爱投彩票 山东十一运夺金 112彩票 山东11选5开奖 天津11选5 全中彩票 山东群英会选号技巧 重庆彩票网 鼎鼎彩票 头奖彩票