容器中对象为指针时的注意事项

1.容器在销毁时,会自动帮你销毁容器中所存储的额对象。
2.当容器中对象是指针的时候,容器销毁的时候,也会帮你销毁容器中的对象-指针。
3.由于容器销毁销毁的只是指针值,而非指针所指对象。则会出现资源泄露
解决方法:
1.用智能指针auto_ptr,shared_ptr来代替指针。思想:用类对象来管理指针的创建销毁。构造函数创建指针,析构函数销毁指针所指对象。
2.显示销毁指针所指对象,使用for_each,结合函数对象。可以实现异常安全
注:刚看了<<effective stl>>条款8,里面说如果使用auto_ptr作为容器对象是愚蠢的行为。所以上面的方法1,用shared_ptr而不能用auto_ptr。
      主要是因为auto_ptr在拷贝的时候有一个所有权的转移。

posted on 2011-05-31 20:18 MrRightLeft 阅读(338) 评论(0)  编辑 收藏 引用 所属分类: STL/Boost


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年5月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜