游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5533|回复: 14

c++ 内存泄露如何检查?

[复制链接]

10

主题

88

帖子

88

积分

注册会员

Rank: 2

积分
88
发表于 2006-8-28 10:10:00 | 显示全部楼层 |阅读模式
正如我所担心的,这个程序耗用的内存不断增加。
不知道调试的时候如何快速找到原因呢?
况且很多 不是自己写的东西,找起来确实比较困难……

现在IDE环境是VS.net 2003里面的vc,非托管代码。

调试的时候能监视heap就好了,不过不知道怎么搞。 [em7]

2

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2006-8-28 11:37:00 | 显示全部楼层

Re:c++ 内存泄露如何检查?

c++内存泄露的确是个大大的难题, 可以通过些工具来帮忙,比如bounderchecker. 如果还是不行的话,就只有用屏蔽代码的手段了。

71

主题

1330

帖子

2585

积分

金牌会员

Rank: 6Rank: 6

积分
2585
发表于 2006-8-28 11:59:00 | 显示全部楼层

Re:c++ 内存泄露如何检查?

我们用 DevPartner 来检测内存泄漏

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2006-8-28 13:34:00 | 显示全部楼层

Re:c++ 内存泄露如何检查?

采用分块测试查找,先找到内存泄漏的程序模块,然后再细分此模块的执行过程,分成更小块,再测试…直到找到泄露代码为止。

工具方面:boundchecker还不错,如果是动态内存分配泄漏,也可以自己写个简单的new\delete malloc\relloc\free 钩子,可以查出动态内存泄漏。如果是资源泄漏,自己写代码来查就复杂了一些,还是分块测试的好。

139

主题

2005

帖子

2057

积分

金牌会员

Rank: 6Rank: 6

积分
2057
QQ
发表于 2006-8-28 14:13:00 | 显示全部楼层

Re:c++ 内存泄露如何检查?

DEBUG_NEW ?

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2006-8-28 14:49:00 | 显示全部楼层

Re:c++ 内存泄露如何检查?

楼主如果想得到运行时的堆栈信息……仿佛也很容易,在unix\linux下有api可用,在win32下面dgbhelp的SDK可以直接得到debug的堆栈信息…不过相信那对你查这种错误来说没太多的用处。

10

主题

88

帖子

88

积分

注册会员

Rank: 2

积分
88
 楼主| 发表于 2006-8-28 21:05:00 | 显示全部楼层

Re:c++ 内存泄露如何检查?

谢谢各位的指点,我去试试看了。

89

主题

4036

帖子

4132

积分

论坛元老

Rank: 8Rank: 8

积分
4132
发表于 2006-8-28 21:22:00 | 显示全部楼层

Re:c++ 内存泄露如何检查?

我喜欢valgrind

10

主题

88

帖子

88

积分

注册会员

Rank: 2

积分
88
 楼主| 发表于 2006-8-29 08:56:00 | 显示全部楼层

Re:c++ 内存泄露如何检查?

总算是把内存溢出的问题解决了,貌似又有“滥杀无辜”的问题了,把一些不该释放的字符串干掉了。

还要仔细再研究研究-v-b

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2006-8-29 09:10:00 | 显示全部楼层

Re:c++ 内存泄露如何检查?

使用智能指针啊,再把所有的new 都管理起来就好了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 09:26

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表