注册
登录
编程中国
搜索
标签
帮助
编程论坛
»
C语言论坛
» 内存泄漏问题
搜索
学习型 ASP/PHP/ASP.NET 主机
30
元/年
全能
ASP/PHP/ASP.NET
主机,支持月付
专业
MSSQL
数据库空间,支持月付
专业
MySQL
数据库空间,支持月付
‹‹ 上一主题
|
下一主题 ››
11
1
2
››
发新话题
发布投票
发布商品
发布悬赏
发布活动
发布辩论
发布视频
打印
内存泄漏问题
bluesky815
新手上路
帖子
4
精华
0
性别
女
注册时间
2008-5-8
个人空间
发短消息
加为好友
当前离线
1
#
大
中
小
发表于 2008-5-8 15:05
只看该作者
内存泄漏问题
哪位朋友可以告诉我,监测内存泄漏有哪些方法啊?不是监测工具,而是技术哟?而且要监测的dll组件是没有源代码的
谢谢各位的回复,但是我感觉好像没什么我想要的答案呢。估计是我的问题没说明白吧
是这样的,我的论文题目老师初步定在通过动态监测检查内存泄漏的情况。这个项目是开发一个组件测试工具,我负责其中的动态监测模块。原本是用c++写的代码,但是现在老师想改成c#。至于内存监测,是能用c#写就用c#,万一不行就用c++。我在网上搜了很多关于内存泄漏的方法,但是貌似都是介绍的工具,而且好像都是针对已知程序的检测。现在我要检测任意一个dll组件,是没有源文件的,针对这种情况我要如何检查它的内存泄漏情况呢
[
本帖最后由 bluesky815 于 2008-5-9 11:32 编辑
]
搜索更多相关主题的帖子:
内存
源代码
泄漏
监测
动态
UID
250091
积分
44
阅读权限
10
在线时间
3 小时
最后登录
2008-5-14
查看详细资料
TOP
StarWing83
金牌会员
帖子
1669
精华
1
性别
男
来自
湖北工业大学
注册时间
2007-11-16
个人空间
发短消息
加为好友
当前离线
2
#
大
中
小
发表于 2008-5-8 16:42
只看该作者
我一般是开任务管理器看……Orz……
专心编程………
飞燕算法初级群:3996098
我的Blog
UID
218134
积分
18359
阅读权限
70
在线时间
376 小时
最后登录
2008-7-25
查看个人网站
查看详细资料
TOP
sunkaidong
论坛元老
帖子
3896
精华
0
性别
男
来自
南京师范大学
注册时间
2006-12-28
个人空间
发短消息
加为好友
当前在线
3
#
大
中
小
发表于 2008-5-8 16:53
只看该作者
指针惹的祸,生成而不释放,造成请求的内存没办法被释放..就没办法被重用..内存被用光..很可怕...一般用工厂化模式解决也可以同auto_ptr..lz说的不明白..在java里面有专门的垃圾回收器
[
本帖最后由 sunkaidong 于 2008-5-8 16:58 编辑
]
学习需要安静。。海盗要重新来过。。
UID
117497
积分
42856
阅读权限
90
在线时间
1477 小时
最后登录
2008-7-25
查看详细资料
TOP
StarWing83
金牌会员
帖子
1669
精华
1
性别
男
来自
湖北工业大学
注册时间
2007-11-16
个人空间
发短消息
加为好友
当前离线
4
#
大
中
小
发表于 2008-5-8 17:28
只看该作者
sun啊……C的哲学是完全信任程序员,所以才将一切底层都暴露出来。如果程序员不能承担这种信任,就不要用C。C是永远不会有垃圾回收这种对程序员透明的东西的。
这里是C区,不是Java区。Java是给不愿意为自己的错误负责的人用的。
内存申请不释放,永远是程序员的错误,而不是语言的错。说C的内存管理是缺陷的人,全是贪图享乐不负责任的渣滓。
修改了一点。Java其实也不是一无是处。
其实对于垃圾回收。我喜欢异常式的。就是一发现未手工回收的内存,如果是Debug就异常报错然后DumpCore。如果是Release就默默无闻地回收掉。这样对大家都好。实现起来,其实也不难。
C++09也开始有垃圾回收了。对于这个只有叹气的份儿。C++堕落了啊……不过如果C++的垃圾回收是上面说的那种模式那当然鼓掌欢迎啦。最怕的是Java式的透明回收过程。内存还无所谓,要是类里面有贵重资源岂不是要占用到回收的时候?而且有了垃圾回收,搞得连析构机制都没法用,需要释放贵重资源还要手工调用。整个反古了……
[
本帖最后由 StarWing83 于 2008-5-8 17:54 编辑
]
专心编程………
飞燕算法初级群:3996098
我的Blog
UID
218134
积分
18359
阅读权限
70
在线时间
376 小时
最后登录
2008-7-25
查看个人网站
查看详细资料
TOP
StarWing83
金牌会员
帖子
1669
精华
1
性别
男
来自
湖北工业大学
注册时间
2007-11-16
个人空间
发短消息
加为好友
当前离线
5
#
大
中
小
发表于 2008-5-8 17:39
只看该作者
__ __
\|\_ \ ∠ /|/
|○| |○|
_| ̄|○ ○| ̄|_
/ /|) (|\ \
| ̄| | ̄|
/ / \ \
专心编程………
飞燕算法初级群:3996098
我的Blog
UID
218134
积分
18359
阅读权限
70
在线时间
376 小时
最后登录
2008-7-25
查看个人网站
查看详细资料
TOP
sunkaidong
论坛元老
帖子
3896
精华
0
性别
男
来自
南京师范大学
注册时间
2006-12-28
个人空间
发短消息
加为好友
当前在线
6
#
大
中
小
发表于 2008-5-8 17:45
只看该作者
翅膀兄弟的话很正确..不过java也在提高效率哦..呵呵b/s和c/s还是很赚钱的啊...java只对超出生命期限的变量回收啊,就是说一旦没了引用,才触发回收,和c++的析构也一样..可以把回收当析构用哦..除了java是半编译半解释型语言效率得不到保证外..其它的c++和java也差不多了..混合了两个优点的就是c#了...
[
本帖最后由 sunkaidong 于 2008-5-8 18:16 编辑
]
学习需要安静。。海盗要重新来过。。
UID
117497
积分
42856
阅读权限
90
在线时间
1477 小时
最后登录
2008-7-25
查看详细资料
TOP
StarWing83
金牌会员
帖子
1669
精华
1
性别
男
来自
湖北工业大学
注册时间
2007-11-16
个人空间
发短消息
加为好友
当前离线
7
#
大
中
小
发表于 2008-5-8 20:21
只看该作者
回复 9# 的帖子
不一样。
在Java中,超出作用域的不一定会马上回收。而是在内存不足的时候,才进行检查和回收。所以才会被叫做“垃圾”回收。但是,如果是贵重资源(比如网络链接,GDI内存,数据库句柄等),就会因为得不到及时的回收而消耗资源。这是Java迄今已来最大的问题。.Net的垃圾回收也面临了这种问题。但是.Net定义了一个Dispose的操作,相当于析构。但是需要手动调用。没有C++的析构的便利性。特别的,在异常发生的时候,C++是自动调用析构函数,而.Net如果设计不当,Dispose函数得不到调用的话,就会导致资源的占用。
所以,垃圾回收其实是治标不治本,而且得不偿失的东西。用来做安全性检测还不错。但是如果全部都依赖它的话,肯定会造成系统性能整体的下降。
专心编程………
飞燕算法初级群:3996098
我的Blog
UID
218134
积分
18359
阅读权限
70
在线时间
376 小时
最后登录
2008-7-25
查看个人网站
查看详细资料
TOP
sunkaidong
论坛元老
帖子
3896
精华
0
性别
男
来自
南京师范大学
注册时间
2006-12-28
个人空间
发短消息
加为好友
当前在线
8
#
大
中
小
发表于 2008-5-8 21:04
只看该作者
最近忙完要好好复习下书..翅膀你大几了?
学习需要安静。。海盗要重新来过。。
UID
117497
积分
42856
阅读权限
90
在线时间
1477 小时
最后登录
2008-7-25
查看详细资料
TOP
moonwalker
高级会员
帖子
843
精华
1
性别
男
注册时间
2007-3-2
个人空间
发短消息
加为好友
当前离线
9
#
大
中
小
发表于 2008-5-8 22:00
只看该作者
监测堆的大小,如果这个dll加载前和释放后堆变小就是泄漏了呗,
如果有多个任务会申请内存,就将任务ID和申请内存的大小记录在表中,
释放的时候查表就可以了
“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
UID
128717
积分
9273
阅读权限
50
在线时间
210 小时
最后登录
2008-7-4
查看详细资料
TOP
StarWing83
金牌会员
帖子
1669
精华
1
性别
男
来自
湖北工业大学
注册时间
2007-11-16
个人空间
发短消息
加为好友
当前离线
10
#
大
中
小
发表于 2008-5-8 22:02
只看该作者
大二……长路漫漫啊……
专心编程………
飞燕算法初级群:3996098
我的Blog
UID
218134
积分
18359
阅读权限
70
在线时间
376 小时
最后登录
2008-7-25
查看个人网站
查看详细资料
TOP
‹‹ 上一主题
|
下一主题 ››
11
1
2
››
控制面板首页
编辑个人资料
积分记录
公众用户组