valgrind提示 still reachable 具体有哪些情况?算不算泄漏?

Gauchy 2008-01-04 10:04:06
大家好,我在linux上开发的一个程序,涉及到数据库读写,有时可能有大数据量操作,在使用valgrind进行检测内存泄漏时,只有一些still reachable的空间,之前查阅valgrind的网站说这种大多数情况是正常的。然后我就认为没有泄漏,在实际使用的时候发现一开始运行,程序占用1.1M左右的空间(使用top命令查看),运行一些比较少的数据读写时也偶尔发生一点变化,但总体维持在总内存的0.4%左右,我的内存是256M的。但当我操作40万条记录时,当然占的空间比较大,当全部记录写入完毕后,我认为应该恢复到0.4%的水平,而实际却是在2.2%左右,占了5.4M的空间,且一直都这么多,我经过了一个晚上后再次查看,还是2.2%。但我再次写入40万条记录后,并不会继续增长,还是维持在2.2%上。
请教一下高手,valgrind所说的still reachable的空间指的是什么情况下,仍然可以访问?会不会算泄漏?
对于我的这个程序来说,是不是内存泄漏了呢?
谢谢!
...全文
2348 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky04551 2011-05-18
  • 打赏
  • 举报
回复
学习了......
enst 2008-01-14
  • 打赏
  • 举报
回复
对 ctrl+c退出时候没有执行后面的内存释放
enst 2008-01-04
  • 打赏
  • 举报
回复
still reachable 指的是内存指针还在 还有机会使用或者释放

如果你后面的程序不用或者不释放也会泄漏 valgrind在当时还不知道以后会不会泄漏
nowplaycn 2008-01-04
  • 打赏
  • 举报
回复
应该说不是memory leak。
一些商业库都会分配自己的工作数据区,频繁调用时可能会多分配一些,而且不一定释放,但有限额。
程序7x24小时运行时,内存稳定到一定的大小,不算内存泄露。
建议使用更好的商业软件,如parasoft insure++或ibm rational purifyplus。花钱在这些软件上,值。
Gauchy 2008-01-04
  • 打赏
  • 举报
回复
to x86
我的程序就是一个while循环,一直在对数据库进行读写,我终止是用的ctrl+c,会不会因为这个造成有still reachable的?
x86 2008-01-04
  • 打赏
  • 举报
回复
多数情况不是问题,比如程序是一个服务,一直运行一个while循环,而new出来的对象如果只能在析构delete,那么对象就永远不会被释放,valgrind就会报这样的问题

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧