读书人

listlt;class Tgt;pop_back是不是调用T类自

发布时间: 2013-01-11 11:57:35 作者: rapoo

list<class T>::pop_back是否调用T类自己里面的析构函数?
我创建了一个T结构(包含一个整数i,和一个int* p),它的构造函数是
p=(int*)malloc(i*sizeof(int))//在指针p上,分配i个整数长度的内存。

当然,对应的析构函数里面也应该有一个free(p)

现在我创建了一个T的list
当我不断的把新的T结构的个体向这个list里面push,然后再从list里面pop_back

请问pop_back是
1.直接作废掉T结构里面的成员变量呢(也就是整数i和int* p作废,但是之前malloc的内存空间还没有释放),
2.还是运行T结构的析构函数(释放了构造之时分配的内存)?


我看stl源码剖析里面,说list::pop_back函数是基于list::erase设计的,不过我没找到erase函数到底是调用T类别自己的析构函数,还是直接作废T的成员变量,这个我不清楚。

求解答
[解决办法]
你要在=赋值(或者复制构造函数)的时候注意:
比如A=B;
你的A建立起来之后,也要malloc,然后析构的时候会调用你自己的析构函数。

读书人网 >C++

热点推荐