BBS.ChinaUnix.net
首页 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 



[C++] 关于内存泄漏
首页 » 论坛 » C/C++ »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
  [未解决] 本主题悬赏 可用积分 5  
earl808
骑士




CU编号: 438383
注册:2006-7-4
最后登录: 2009-03-01
帖子:59
精华:0

可用积分:37 (白手起家)
信誉积分:110
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


1楼 发表于 2008-11-21 00:20 

程序里面没有用new
在一个循环里面声明了一个局部对象,程序会往这个局部对象里面塞很多的东西。
但是从程序的运行状况看,循环完成后这个对象好像没有释放内存。
这个局部对象里主要有一些vector 和list组成,这些要手动清空?



您对本贴的看法:鲜花[0] 臭蛋[0]
版主 win_hate   帅哥 (Hope is for sissies.)
版主-精灵使



CU编号: 56952
注册:2003-5-14
最后登录: 2009-06-30
帖子:4312
精华:4

可用积分:11523 (大富大贵)
信誉积分:100
专家积分:297 (本版:267)
空间积分:20
推广积分:41

来自:广东 广州
状态:...保密...

[个人空间] [短信] [博客]


2楼 发表于 2008-11-21 00:23 

要。vector, list 都是可扩展的,你的代码没有直接用 'new',但 vector, list 内部使用了与之等价的东西。

C++  现在还不支持自动垃圾回收。

[ 本帖最后由 win_hate 于 2008-11-21 00:24 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________


雨过白鹭洲   帅哥 (Kevin)
大天使
Holy Shit



CU编号: 749293
注册:2008-8-21
最后登录: 2009-07-03
帖子:2210
精华:0

可用积分:13623 (大富大贵)
信誉积分:12
专家积分:75 (本版:35)
空间积分:0
推广积分:0

来自:Hell
状态:...离线...

[个人空间] [短信] [博客]


3楼 发表于 2008-11-21 00:23 

那就移出循环嘛



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

Pain does not matter to a man.
版主 win_hate   帅哥 (Hope is for sissies.)
版主-精灵使



CU编号: 56952
注册:2003-5-14
最后登录: 2009-06-30
帖子:4312
精华:4

可用积分:11523 (大富大贵)
信誉积分:100
专家积分:297 (本版:267)
空间积分:20
推广积分:41

来自:广东 广州
状态:...保密...

[个人空间] [短信] [博客]


4楼 发表于 2008-11-21 00:30 

在循环结束后,局部对象会被销毁。应该在该对象的析构函数中回收空间。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________


galaxywar
大法师
[禁止发言]


CU奥运火炬传递手2008
CU编号: 204766
注册:2004-12-3
最后登录: 2009-05-15
帖子:8669
精华:0

可用积分:611 (丰衣足食)
信誉积分:430
专家积分:542 (本版:0)
空间积分:0
推广积分:0

状态:...保密...

[个人空间] [短信] [博客]


5楼 发表于 2008-11-21 00:31 

但局部对象本身在退出循环之后并不会占用什么内存了, 除非里面存储的指针指向new出来的内存,但那还是得在某个地方new

有一种可能:有些系统调用=>标准C库函数调用函数的返回值是malloc出来的,需要手动释放

写错了.

[ 本帖最后由 galaxywar 于 2008-11-26 23:03 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

路漫漫其修远兮
吾将上下而求索

古之立大志者,不惟有超世之才,亦必有坚韧不拔之志
Alligator27   帅哥
风云使者



CU编号: 245444
注册:2005-3-27
最后登录: 2009-04-01
帖子:517
精华:0

可用积分:607 (丰衣足食)
信誉积分:100
专家积分:120 (本版:120)
空间积分:0
推广积分:0

状态:...保密...

[个人空间] [短信] [博客]


6楼 发表于 2008-11-21 01:40 

没有 new/malloc, 就不用 delete/free.
vector, list 用的内存, 在它们的析构函数中释放。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

If you tell the truth, you don't have to remember anything.  -- Mark Twain

My Open Source Project:   http://accutrak.sourceforge.net
hellioncu (特别坏)
精灵使



CU编号: 379236
注册:2006-3-1
最后登录: 2009-07-04
帖子:3740
精华:0

可用积分:2158 (小富即安)
信誉积分:100
专家积分:187 (本版:50)
空间积分:0
推广积分:23

来自:地狱
状态:...离线...

[个人空间] [短信] [博客]


7楼 发表于 2008-11-21 08:06 

LZ怎么认为没有释放呢?



您对本贴的看法:鲜花[0] 臭蛋[0]
yangsf5   帅哥 (三疯)
法师


CU奥运火炬传递手2008
CU编号: 652233
注册:2007-12-9
最后登录: 2009-07-05
帖子:5531
精华:0

可用积分:6623 (富足长乐)
信誉积分:5
专家积分:20 (本版:0)
空间积分:804
推广积分:162

状态:...在线...

[个人空间] [短信] [博客]


8楼 发表于 2008-11-21 08:26 



QUOTE:
原帖由 win_hate 于 2008-11-21 00:23 发表
要。vector, list 都是可扩展的,你的代码没有直接用 'new',但 vector, list 内部使用了与之等价的东西。

C++  现在还不支持自动垃圾回收。

Are u sure?



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

无业游民中
linux c++ 网络服务器开发
QQ群:25682102

nicozhou   帅哥
大法师
....



CU编号: 318729
注册:2005-9-28
最后登录: 2009-07-05
帖子:10965
精华:2

可用积分:5064 (富足长乐)
信誉积分:130
专家积分:734 (本版:0)
空间积分:827
推广积分:283

来自:SH
状态:...保密...

[个人空间] [短信] [博客]


9楼 发表于 2008-11-21 08:39 



QUOTE:
原帖由 galaxywar 于 2008-11-21 00:31 发表
但局部对象本身在退出循环之后并不会占用什么内存了, 除非里面存储的指针指向new出来的内存,但那还是得在某个地方new

有一种可能:有些系统调用函数的返回值是malloc出来的,需要手动释放

这种系统调用比较恐怖。



您对本贴的看法:鲜花[0] 臭蛋[1]

__________________________________

裹尸布上没有口袋


alexhappy (Alex)
天使
bug killer



CU编号: 769801
注册:2008-10-6
最后登录: 2009-07-05
帖子:1081
精华:0

可用积分:3623 (小富即安)
信誉积分:0
专家积分:145 (本版:105)
空间积分:0
推广积分:0

来自:上海
状态:...保密...

[个人空间] [短信] [博客]


10楼 发表于 2008-11-21 09:02 



QUOTE:
原帖由 galaxywar 于 2008-11-21 00:31 发表
但局部对象本身在退出循环之后并不会占用什么内存了, 除非里面存储的指针指向new出来的内存,但那还是得在某个地方new

有一种可能:有些系统调用函数的返回值是malloc出来的,需要手动释放

那这种系统调用肯定会有一个相应的释放函数了?



您对本贴的看法:鲜花[0] 臭蛋[0]

首页 » 论坛 » C/C++ »


 


Copyright © 2001-2009 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

Processed in 0.070568 second(s), 4 queries , Gzip enabled