URN Logo
UNIX Resources » Linux » China Linux Forum » C/C++编程版 » 33 » 还是关于内存泄漏问题
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
还是关于内存泄漏问题
还是关于内存泄漏问题 - twmt_linuxforum [2005-05-26 14:07 | 542 byte(s)]
 
Re: 还是关于内存泄漏问题 - whone23 [2005-05-26 16:05 | 114 byte(s)]
 
Re: 还是关于内存泄漏问题 - teawater [2005-05-26 14:47 | 112 byte(s)]
 
Re: 还是关于内存泄漏问题 - twmt_linuxforum [2005-05-26 15:02 | 118 byte(s)]
 
这样判断内存泄漏是否正确? - twmt_linuxforum [2005-05-26 15:59 | 191 byte(s)]
 
Re: 这样判断内存泄漏是否正确? - sunwen_ling [2005-05-26 16:07 | 318 byte(s)]
 
 
 
Subject: 还是关于内存泄漏问题
Author: twmt_linuxforum    Posted: 2005-05-26 14:07    Length: 542 byte(s)
[Original] [Print] [Top]
再次请教:

下面这个程序执行一次,也就是5000次循环调用foo?()函数,执行前后通过free参看内存,发现可用内存减少了1.2M左右,这是否正常?

如果正常的话,减少的1.2M内存为何得不到释放呢?这个应该由内核负责释放的吧。
如果是内存泄漏,那会哪些原因导致的呢?请举点参见错误编码。谢谢!
(我已经用memwatch和valgrind查过,未发现内存泄漏现象)

void main()
{
int t=0;
while(t++<5000){
foo1();
foo2();
}
}
[Original] [Print] [Top]
Subject: Re: 还是关于内存泄漏问题
Author: teawater    Posted: 2005-05-26 14:47    Length: 112 byte(s)
[Original] [Print] [Top]
(我已经用memwatch和valgrind查过,未发现内存泄漏现象)
cache什么的吧 要是泄露这2个东西还有能查不出的?
----
读了这么多年的书 还是觉得幼儿园好混
[Original] [Print] [Top]
Subject: Re: 还是关于内存泄漏问题
Author: twmt_linuxforum    Posted: 2005-05-26 15:02    Length: 118 byte(s)
[Original] [Print] [Top]
我用这两个工具是没有发现内存泄漏。但运行前后的free空间会减少的。

我没有明白你的意思,可以详细点吗?
[Original] [Print] [Top]
Subject: 这样判断内存泄漏是否正确?
Author: twmt_linuxforum    Posted: 2005-05-26 15:59    Length: 191 byte(s)
[Original] [Print] [Top]

以single用户登陆,只运行需要测试的程序。在执行程序前后用free查看used和free Mem, 通过查看used/free 内存值的变化来判断。
如果发现free内存减少,是不是就可以断定内存泄漏了呢?
[Original] [Print] [Top]
Subject: Re: 还是关于内存泄漏问题
Author: whone23    Posted: 2005-05-26 16:05    Length: 114 byte(s)
[Original] [Print] [Top]
比较笨的办法

循环次数多加100倍
用个只有128M内存的计算机,如果没有oom错,那就没有问题了
[Original] [Print] [Top]
Subject: Re: 这样判断内存泄漏是否正确?
Author: sunwen_ling    Posted: 2005-05-26 16:07    Length: 318 byte(s)
[Original] [Print] [Top]
Of course not, I think.
There are various daemon(and other kernel thread) running, the are the potential memory consumer.

The memory leak is strict in the exec session, after the program terminates, the memory used by this program will freed by OS. At this stage, the 'leak' is meaningless.
----
知之为知之,不知为不知,是知也!
[Original] [Print] [Top]
Subject: Re: 这样判断内存泄漏是否正确?
Author: twmt_linuxforum    Posted: 2005-05-26 17:30    Length: 287 byte(s)
[Original] [Print] [Top]
运行10 000次,前后得free结果分别为:

total used free shared buffers cached
222944 38184 188760 0 4912 8960 //运行前
222944 40744 182200 0 11884 9000 //运行后

free空间减少了6560k,这是什么原因造成的呢?
btw:我是单用户登陆的
[Original] [Print] [Top]
Subject: Re: 这样判断内存泄漏是否正确?
Author: drangon_zhou    Posted: 2005-05-26 20:31    Length: 109 byte(s)
[Original] [Print] [Top]
free空间变成buffer了,正常现象。

ps或者top看看进程所占的内存有没有增大,这个有可能是泄漏。
----
岂有豪情似旧时,花开花落两由之。
[Original] [Print] [Top]
« Previous thread
请问在Linux下怎么能查到C++的帮助
C/C++编程版
33
Next thread »
问一个以前关于segmentation fault的问题
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2008-07-17 03:52:55, cost 0.040421962738037 ms.