class Stack{
public:
Stack(int capacity){
data.reserve(capacity);
theSize = 0;
}
~Stack(){
//What should I put here?
}
这里的数据是Vector的一个对象。 我知道当Stack对象从内存中弹出时,数据的析构函数()最终将启动并删除数据中的数组。但我是否还必须删除Stack对象存储的内存?我该怎么做呢?谢谢。
答案 0 :(得分:3)
这取决于您的vector ie data
存储的数据类型。如果它是“vector<int>
”之类的东西或者不是指针的东西那么你就不需要定义destructor
,因为data
会为每个元素调用析构函数致电its own destructor
。
但是,如果您正在使用vector<int*>
或类似的东西,vector (ie data)
所持有的指针在堆上保存变量(即使用new
关键字调用它们)那么您需要明确将您的Stack
析构函数写为: -
~Stack()
{
for (int i=0;i<data.size();++i)
{
delete data.at(i); // or delete data[i]
}
}
Stack
对象存储的内存将归因于其数据类型。如果数据类型被破坏,那么Stack
也将被销毁,释放它占用的内存。