新浪微博
腾讯微博
会员列表
统计排行
基本信息
到访IP统计
管理团队
管理统计
在线会员
会员排行
版块排行
帖子排行
标签排行
帮助
下拉
用户名
电子邮箱
用户名
密 码
记住登录
登录
找回密码
注册
快捷通道
关闭
您还没有登录,快捷通道只有在登录后才能使用。
立即登录
还没有帐号? 赶紧
注册一个
首页
论坛
Qt下载
作品展
群组
个人中心
捐赠、管理与开发
邮件订阅
帖子
文章
日志
用户
版块
群组
帖子
搜索
QTCN开发网
>
Qt基础编程
>
有没有适合检测Qt工程内存泄漏的工具?
发帖
回复
返回列表
新帖
13458
阅读
5
回复
[提问]
有没有适合检测Qt工程内存泄漏的工具?
[复制链接]
上一主题
下一主题
离线
xuang
UID:134569
注册时间
2012-07-25
最后登录
2017-06-08
在线时间
897小时
发帖
74
搜Ta的帖子
精华
0
金钱
770
威望
84
贡献值
0
好评度
74
访问TA的空间
加好友
用道具
新手上路
关闭
个人中心可以申请新版勋章哦
立即申请
知道了
加关注
发消息
只看楼主
倒序阅读
楼主
发表于: 2014-01-11
用Qt做了一个
数据
入库的软件,需要长时间放在服务器上运行,但是现在发现内存总是在增长,所以怀疑在哪里有内存泄漏了,但是用了一些内存泄漏检测工具都不好使(如Visual Leak Detector),即便是空的Qt工程也会报一大堆内存泄漏,可能是因为Qt本身的父子对象机制造成的。所以想请教各位前辈们,你们在Qt工程里是怎么检测内存泄漏的?不会真的是一行一行单步
调试
吧?
共
条评分
回复
举报
分享到
淘江湖
新浪
QQ微博
QQ空间
开心
人人
豆瓣
网易微博
百度
鲜果
白社会
飞信
离线
xuang
UID:134569
注册时间
2012-07-25
最后登录
2017-06-08
在线时间
897小时
发帖
74
搜Ta的帖子
精华
0
金钱
770
威望
84
贡献值
0
好评度
74
访问TA的空间
加好友
用道具
新手上路
加关注
发消息
只看该作者
1楼
发表于: 2014-01-11
还有一个刚刚发现的问题:Qt中的QTreeWidgetItem、QTableWidgetItem、QListWidgetItem这三个类好像不是继承自QObject,所以是不是不适用于Qt自己的父子对象销毁机制?我在这种视图类显示刷新的时候总是先clear(),然后重新new一大串需要显示的item,这样会内存泄露吗?Qt的帮助文档里QListWidget类的clear()是这么说的:
Warning:
All items will be permanently deleted.这不是会删除吗?
共
条评分
回复
举报
离线
渡世白玉
UID:129774
注册时间
2012-04-01
最后登录
2019-11-19
在线时间
253小时
发帖
225
搜Ta的帖子
精华
4
金钱
2351
威望
243
贡献值
2
好评度
233
访问TA的空间
加好友
用道具
论坛版主
加关注
发消息
只看该作者
2楼
发表于: 2014-01-11
QListWidget 还有tablewidget的clear会释放WidgetItem的内存的、、
只是Qt内部好像也维护着一个内存池的东西的、、
好像tablewidget类似的clear后每个tem的内存都被释放了,但是没有释放给操作系统,很多是Qt内部管起来,便于下次快速申请的、、、
现在发现内存总是在增长、、、这个你再检查一下你的代码呢、、、
话说服务器上的就应该用不到GUI模块把?
共
条评分
回复
举报
离线
xuang
UID:134569
注册时间
2012-07-25
最后登录
2017-06-08
在线时间
897小时
发帖
74
搜Ta的帖子
精华
0
金钱
770
威望
84
贡献值
0
好评度
74
访问TA的空间
加好友
用道具
新手上路
加关注
发消息
只看该作者
3楼
发表于: 2014-01-11
回 2楼(渡世白玉) 的帖子
谢谢,你说的这个释放了内存但是没有释放给操作系统是什么意思?是不是我用任务管理器查看进程的内存数不会减少?
这个程序其实本来不是在服务器上运行的,只是对方临时提的要求所以我才会检查内存泄漏的问题。
共
条评分
回复
举报
离线
渡世白玉
UID:129774
注册时间
2012-04-01
最后登录
2019-11-19
在线时间
253小时
发帖
225
搜Ta的帖子
精华
4
金钱
2351
威望
243
贡献值
2
好评度
233
访问TA的空间
加好友
用道具
论坛版主
加关注
发消息
只看该作者
4楼
发表于: 2014-01-11
回 3楼(xuang) 的帖子
内存池的概念、、、释放了,但是程序自己管理,下次需要申请内存时,优先利用这些内存,不会再去向系统申请内存、、、
共
条评分
回复
举报
离线
彩阳
UID:136309
注册时间
2012-09-13
最后登录
2020-04-15
在线时间
2784小时
发帖
1247
搜Ta的帖子
精华
2
金钱
13131
威望
1310
贡献值
11
好评度
1302
访问TA的空间
加好友
用道具
精灵王
加关注
发消息
只看该作者
5楼
发表于: 2014-01-12
如果无法使用调试器,那么可以试试:
QObject::connect( pTheObjectInheritedByQObject, SIGNAL( destroyed( QObject* ) ),
pYourSlotClass, SLOT( yourSlot( QObject* ) );
再在yourSlot( QObject* )中输出该object。
有调试器的话,可下断点下在yourSlot()函数中,查看调用堆栈。
共
条评分
上海Qt开发联盟,热忱地欢迎你的加入!
回复
举报
发帖
回复
返回列表
http://www.qtcn.org/bbs
访问内容超出本站范围,不能确定是否安全
继续访问
取消访问
快速回复
限100 字节
您目前还是游客,请
登录
或
注册
进入高级模式
文字颜色
发 布
回复后跳转到最后一页
上一个
下一个
关闭
补充发布信息
验证码:
发 布
隐藏
快速跳转
站务及资讯
网站公告
新闻资讯
Qt官方发布
网站管理
Qt应用及资源
Qt 作品展
Qt代码秀
Qt应用版
Qt技术讨论区
Qt安装与发布
Qt中文处理
Qt基础编程
Qt QML开发
Qt嵌入式开发
Qt移动平台开发
其它技术开发讨论区
Qt图书专区
《C++ GUI Qt 4编程》(第2版)专栏
《Qt高级编程》专栏
《零基础学Qt4编程》专栏
《Qt设计模式》(第2版) 图书专栏
Python Qt GUI快速编程
Qt项目开发区
天池项目
Qt开放平台开发库
机械CAD
扇贝词典
非活跃项目区
社区中心
帖子回收站(Trash)
招聘、求职、供求、广告等
休闲娱乐
关闭
关闭
选中
1
篇
全选