OpenCV中文網站

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
熱搜: 安裝 配置
查看: 1256|回復: 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#
發表于 2019-11-8 12:16:36 | 只看該作者
我給大家找到了大概十幾年前在MFC的新聞組里面我的提問,以及幾個MFC大牛的回復。都是關于OpenCV內存泄漏問題的內容。

https://groups.google.com/d/topi ... GENar9R4/discussion

有興趣大家自己去看。
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|OpenCV中文網站  

GMT+8, 2019-12-13 11:21 , Processed in 0.040402 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表
重庆时时现场开奖结果