【发布时间】:2011-07-20 06:58:30
【问题描述】:
我正在处理一个包含queues 数组的对象,该数组的长度在调用构造函数之前不会确定。基本上它看起来像下面这样
#include <queue>
class myClass{
public:
//public functions
private:
//private functions and variables
queue<int>* myQueue;
};
它是这样初始化的:
myClass::myClass(int numOfQueues){
myQueue = new queue<int>[numOfQueues];
}
看起来,这一切都很好。它的功能与我希望的完全一样,但是现在每次退出程序时都会出现分段错误。该类中还有一些其他数组,它们以相同的方式初始化,但它们的类型是bool 和int,而不是队列。我的析构函数看起来像:
myClass::~myClass(){
delete boolArray;
delete intArray;
delete myQueue;
}
现在我假设这个析构函数适用于boolArray 和intArray 指针,因为直到我添加myQueue 才开始出现段错误。有谁知道编写析构函数的正确方法是什么?是否有可能这就是我所要做的,而析构函数没有在适当的时间被调用?
【问题讨论】:
-
如果您没有在
myClass析构函数之前的任何位置删除myQueue,则删除它不会导致分段错误。
标签: c++ arrays pointers queue delete-operator