首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

list<class T>pop_back是不是调用T类自己里面的析构函数

2013-01-11 
listclass T::pop_back是否调用T类自己里面的析构函数?我创建了一个T结构(包含一个整数i,和一个int* p),

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,然后析构的时候会调用你自己的析构函数。

热点排行