找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 5300|回复: 5

容器指针

[复制链接]
发表于 2007-12-21 22:07:36 | 显示全部楼层 |阅读模式
{
std::vector<my_type*> v;
for (int i = 0; i < N; ++i)
    v.insert(new my_type(i));
...
} // v is destroyed here
    这个内存泄漏是编译器的bug吗?std::vector的析构函数不是会销毁v的元素的吗?
 楼主| 发表于 2007-12-21 22:07:45 | 显示全部楼层
用完手工改变vector的大小 v.capacity(0)
 楼主| 发表于 2007-12-21 22:07:49 | 显示全部楼层
不是BUG,你自己NEW的要你自己释放
 楼主| 发表于 2007-12-21 22:07:56 | 显示全部楼层
vector里面放的指针,不是对象,指针本身vector销毁,指针的内容由你负责
 楼主| 发表于 2007-12-21 22:08:20 | 显示全部楼层
是你自己的问题,vector的实现上只会对存储的非指针执行销毁,你存储指针的话,需要你自己删除存储的没一个对象,当然你可以考虑使用智能指针来封装,ACE、Boost和Loki等类库都提供有实现,推荐使用Loki的(如果你没有学过且不太急的话,对于Loki库,可以看《C++设计新思维——泛型编程与设计模式之应用》,Loki库作者写的,侯捷翻译),如果太急,也可以去下载一个简单的智能指针实现,但是最好要自己多测试一下,因为有些这样的是有问题的
发表于 2008-4-29 13:14:36 | 显示全部楼层
又学习了,呵呵:victory:
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-6 14:26 , Processed in 0.026197 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表