|
|
|
|
| 请教:程序运行一次占用8k内存,但没有查到内存泄漏。 |
 请教:程序运行一次占用8k内存,但没有查到内存泄漏。 - twmt_linuxforum [ 2005-05-23 09:43 | 199 byte(s)]
 Re: 请教:程序运行一次占用8k内存,但没有查到内存泄漏。 - Atu [ 2005-05-23 10:25 | 278 byte(s)]
 Re: 请教:程序运行一次占用8k内存,但没有查到内存泄漏。 - twmt_linuxforum [ 2005-05-23 10:58 | 492 byte(s)]
 Re: 请教:程序运行一次占用8k内存,但没有查到内存泄漏。 - Atu [ 2005-05-23 11:33 | 350 byte(s)]
 Re: 请教:程序运行一次占用8k内存,但没有查到内存泄漏。 - z_york [ 2005-05-23 13:30 | 130 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
通过top查看内存占用的情况,发现程序每执行一次就被占用8k内存。使用了MEMWATCH和valgrind内存工具,并未提示有内存未释放情况。
请问,这可能是什么原因造成的呢?
谢谢!
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
> 通过top查看内存占用的情况,发现程序每执行一次就被占用8k内存。
你说“程序没执行一次”,是指程序“启动,运行,并退出一次”?
如果是这样,那么内存问题与这个程序无关。
因为程序退出的时候,它的内存是由操作系统释放的。
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
谢谢你的回复!
我的程序是这样:
实现了多个方法,如foo1(), foo2()。
在测试时循环调用,如
void main()
{
while(1){
foo1();
foo2();
}
}
此时通过top查看内存使用情况,可以发现存储区不断地被吃掉。
如果中止程序运行,内存还可以回复到运行前的情况。
对于这种情况,我该如何修改程序,来使得程序及时释放内存而实现可以长期运行呢?
谢谢!
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
你的表达确实不太准确。
如果是这种情况,可能是内存泄漏。
用工具检查不出来,就只能靠人了
1. 静态检查代码,主要是分配内存的地方是否有忘记释放的;
2. 注释掉一些代码后,再测试,逐步缩小范围
3. 如果是C++,重载new/delete,记录分配和释放信息,然后对比,网上也有类似的代码。
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
|
在C下面可以使用dmalloc库的dmalloc_malloc来代替malloc,能跟踪内存使用情况。这是我在阅读PrBoom代码的时候看到的,自己并未亲自使用过。
|
|
|
----
I love David Beckham and Man.Utd. for ever.
|
|
[Original]
[Print]
[Top]
|
|
|