peakzhang 发表于 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的元素的吗?

peakzhang 发表于 2007-12-21 22:07:45

用完手工改变vector的大小 v.capacity(0)

peakzhang 发表于 2007-12-21 22:07:49

不是BUG,你自己NEW的要你自己释放

peakzhang 发表于 2007-12-21 22:07:56

vector里面放的指针,不是对象,指针本身vector销毁,指针的内容由你负责

peakzhang 发表于 2007-12-21 22:08:20

是你自己的问题,vector的实现上只会对存储的非指针执行销毁,你存储指针的话,需要你自己删除存储的没一个对象,当然你可以考虑使用智能指针来封装,ACE、Boost和Loki等类库都提供有实现,推荐使用Loki的(如果你没有学过且不太急的话,对于Loki库,可以看《C++设计新思维——泛型编程与设计模式之应用》,Loki库作者写的,侯捷翻译),如果太急,也可以去下载一个简单的智能指针实现,但是最好要自己多测试一下,因为有些这样的是有问题的

zt0412 发表于 2008-4-29 13:14:36

又学习了,呵呵:victory:
页: [1]
查看完整版本: 容器指针