woaidongmao

文章均收录自他人博客,但不喜标题前加-[转贴],因其丑陋,见谅!~
随笔 - 1469, 文章 - 0, 评论 - 661, 引用 - 0
数据加载中……

关于STL容器存储对象的问题

请问如果我在STL容器存储的是对象,那么我在调用clear()或eara()的时候,会自动释放这个对象的内存空间吗?会执行该对象的析够函数吗?

=======================

会,析构函数也会自动调用。  
  但如果存储的是对象的指针,外部对象如果是在堆上分配的,需要我们自已delete

=======================

STL的容器是基于by   value语意的。当你把一个元素放入容器中,在容器中存放的实际上是这个元素的一个副本(这就是为什么STL容器要求元素必须可以拷贝构造和赋值),副本所占的内存是STL容器自己分配的,所以它会自己回收这些内存,同时调用元素的析构函数。  
  但是如果你把指针放到容器中,clear的时候容器只负责回收指针本身所占的内存,至于指针所指向的东西,它是不管。

posted on 2009-09-02 22:23 肥仔 阅读(925) 评论(0)  编辑 收藏 引用 所属分类: Boost & STL


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