在VS2013平台下如何快速解决c++代码内存泄漏问题
在学习FPS3000人脸关键点定位算法时,发现github上的源码,存在大量的内存泄漏问题,在训练的时发现内存一直在增长,测试的时候也存在内存无法彻底释放的问题。
一直以为是存放模型参数vector<class>结构的问题, 采用以下方法手动释放,仍然无法解决问题。
- vector<class> regressors_;
- regressors_.clear();
- std::vector<Regressor>().swap(regressors_);
经过仔细检查发现,有好几个类没有析构函数,于是就添加了CascadeRegressor::~CascadeRegressor();Regressor::~Regressor();RandomForest::~RandomForest();Node::~Node();由于class类不支持手动释放,只能在析构函数里自动释放内存。而且还发现有很多new()和#define Malloc(type,n) (type *)malloc((n)*sizeof(type))手动方式分配的内存没有手动释放。
那我是怎么发现的呢?方法如下:
一、在VS2013的DeBug模式下在代码中添加如下代码:
- #include <stdlib.h>
- #include <crtdbg.h>
- #ifdef _DEBUG
- #define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
- #endif
- void EnableMemLeakCheck()
- {
- int tmpFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
- tmpFlag |= _CRTDBG_LEAK_CHECK_DF;
- _CrtSetDbgFlag(tmpFlag);
- }
- using namespace std;
- int main()
- {
- EnableMemLeakCheck();
- //_CrtSetBreakAlloc(3558059);
- 此处添加自己的代码
- }
二、然后编译执行程序,如果代码中存在内存泄漏,则在程序终止时,输出端口看到如下内容:
- 线程 0x1b24 已退出,返回值为 0 (0x0)。
- Detected memory leaks!
- Dumping objects ->
- {3558059} normal block at 0x0000000007F11480, 62544 bytes long.
- Data: < y W] > CC AD FF AD AA 1B A2 BE 79 9E 57 5D E2 8E FE BE
- {3558049} normal block at 0x0000000007CB98F0, 88 bytes long.
- Data: < > 0C 00 00 00 CD CD CD CD CD CD CD CD CD CD CD CD
- {3558025} normal block at 0x0000000007EF1A90, 62544 bytes long.
- Data: < FR > .u ?> E2 CB 46 52 DD 11 E1 3E CB C9 93 2E 75 BE 00 3F
- {3558015} normal block at 0x0000000007CBA170, 88 bytes long.
- Data: < > 0C 00 00 00 CD CD CD CD CD CD CD CD CD CD CD CD
从以上log中可以看到3558059的地方存在内存泄漏,那我们可以把main()函数中的这个函数去掉注释,
- int main()
- {
- EnableMemLeakCheck();
- _CrtSetBreakAlloc(3558059);
- 此处添加自己的代码
- }
然后重新编译并执行程序,代码就会run到内存泄漏的地方就停下来。
此法对于查找内存泄漏非常方便。
在VS2013平台下如何快速解决c++代码内存泄漏问题相关推荐
- windows平台下使用Github(2 创建代码仓库,安装Github客户端.)
本文会分章节的来介绍如何在windows平台下使用GitHub 一.注册Github账号 查看 二.创建代码仓库,安装Github客户端.查看 三.Github上传和下载(1 客户端方式)查看 四.G ...
- linux下使用命令行辅助定位内存泄漏问题
文章目录 前言 一.free命令: 命令 内容解释 其它 二.top命令 命令 其它 三. cat /proc/$pid/status 命令 内容解释 总结 前言 最近自己正在做的一款产品,因内存泄漏 ...
- 理解并解决IE的内存泄漏方式[翻译2]
大家节日快乐!俺就继续这个IE内存泄漏的主题来作为节日礼物了,并且相当欢迎大家来一起讨论.这一节讲Closures引起的内存泄漏,最后我还是决定把Closures翻译成了闭包或闭包函数.而且又在KB中 ...
- Release编译模式下,事件是否会引起内存泄漏问题初步研究
题记:不常发生的事件内存泄漏现象 想必有些朋友也常常使用事件,但是很少解除事件挂钩,程序也没有听说过内存泄漏之类的问题.幸运的是,在某些情况下,的确不会出问题,很多年前做的项目就跑得好好的,包括我也是 ...
- 内存泄漏的原因及解决办法_内存泄漏的场景和解决办法
1.非静态内部类会持有外部类的引用,如果非静态内部类的实例是静态的,就会长期的维持着外部类的引用,组织被系统回收,解决办法是使用静态内部类 2.多线程相关的匿名内部类和非静态内部类 匿名内部类同样会持 ...
- 一次解决Linux内核内存泄漏实战全过程
责编 | 张红月 来源 | Linux阅码场 2020 年转眼间白驹过隙般飞奔而去,在岁末年初的当口,笔者在回顾这一年程序员世界的大事件后,突然发觉如何避免程序员面向监狱编程是个特别值得一谈的话题. ...
- 海思linux内核 太大,一次解决Linux内核内存泄漏实战全过程
责编 | 张红月 来源 | Linux阅码场 2020 年转眼间白驹过隙般飞奔而去,在岁末年初的当口,笔者在回顾这一年程序员世界的大事件后,突然发觉如何避免程序员面向监狱编程是个特别值得一谈的话题. ...
- 旅游市场火热,翔云人工智能平台助你快速解决发票问题
随着疫情的退散,今年我国旅游市场也火热起来,大量旅客出行旅游,感受疫情结束后热气腾腾的生活.鉴于旅游行业的特殊性,接团旅游企业替旅游者支付的住宿费.餐费和旅游景点门票等,要以发票作为扣除营业税的依据. ...
- ubuntu下Qt Creator使用valgrind检测内存泄漏
1.安装valgrind sudo apt-get install valgrind 2. Valgrind的使用 为了使valgrind发现的错误更精确,如能够定位到源代码行,建议在编译时加上-g参 ...
最新文章
- 论文其实也没有那么难!
- 研究生自学python好找工作么-学完Python好找工作吗?为什么有人学完找不到工作?...
- 在servlet中设置的字符编码集为什么还会出现乱码(亲测)
- c++调用python的代码、函数、类
- SnipperImages(Silverlight DEMO)控件设计之--Slider和ColorSlider
- 对VMware自动安装linux系统说“不”!
- HYSBZ - 2157树链剖分
- Windows核心编程_HOOk SOCKET实现封包拦截
- 运算符in和not in
- Atitit 项目文档规范化与必备文档与推荐文档列表
- html字体样式圆体,网红字体“柚圆体”出现,书写工整又清新,老师也被这种字体圈粉...
- 怀集天气预报软件测试,【天气】怀集要入夏?这份天气预报告诉你答案!
- 什么叫大数据人物画像_【说大数据】人物画像 :大数据时代的心灵捕手
- SCCM通过PXE部署系统蓝屏Recovery
- 《Slice-to-volume medical image registration: A survey》论文阅读
- java.sql.SQLException: Access denied for user ‘Xs‘@‘localhost‘ (using password: YES) 出现的原因和解决办法
- 后浪青年的聊天,需要Python助威!
- opengl纹理颠倒,rgb通道错位等。详解rgba,bgra,argb等内存序
- js实现桌面录屏功能
- win7旗舰版6l打印机咋安驱动_w7怎样安装打印机驱动_win7安装打印机驱动教程
热门文章
- h5获取http请求头_nodejs 中http请求头,响应头
- C/C++队列与循环队列
- linux中央服务器,如何在Linux上搭建一个Git中央仓库
- 潍坊经贸每年单招计算机的成绩,2018潍坊职业学院单招成绩查询时间
- 心理学博士vs计算机博士,零基础跨专业考心理学博士,可以给我一些建议吗?...
- java趣味_Java趣味分享:try finally
- 吃下去的东西老是往上翻上来_食管裂孔疝的这个诱因你知道吗?医生:不要再吃过烫的食物...
- 合肥天鹅湖万达广场机器人_合肥租房价位及租房地理位置推荐
- opencv 高通滤波和低通滤波_滤波电路合集(低通滤波,CLCП滤波,DLC滤波,CRC П滤波)...
- 如何查询高考成绩2021年的成绩排位,2020年高考成绩排名怎么查,高考成绩排名是怎么排的...