我正在处理一个包含 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
之前我没有开始出现段错误.有谁知道编写析构函数的正确方法是什么?有没有可能这就是我必须做的所有事情,而析构函数只是没有在适当的时间被调用?
最佳答案
因为你分配使用new[]
你应该做delete[] myQueue;
在析构函数中。否则它会调用未定义的行为。顺便说一句,你可以使用 std::vector<std::queue<int> >
如果您不想遇到此类内存管理问题。
关于c++ - 删除队列对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5388373/