删除队列对象数组

Ale*_*lex 2 c++ arrays queue pointers delete-operator

我正在处理一个对象,该对象包含一个queues数组长度的数组,该数组长度在调用构造函数之前不会被确定.基本上它看起来像下面这样

#include <queue>

class myClass{
public:
  //public functions
private:
  //private functions and variables

  queue<int>* myQueue;
};
Run Code Online (Sandbox Code Playgroud)

它初始化如下:

myClass::myClass(int numOfQueues){
  myQueue = new queue<int>[numOfQueues];
}
Run Code Online (Sandbox Code Playgroud)

看起来这一切都很美妙.它的功能与我希望的完全一样,但现在每次退出程序时都会出现分段错误.该类中有一些其他数组以相同的方式初始化,但这些数组是类型boolint不是队列.我的析构函数看起来像:

myClass::~myClass(){
  delete boolArray;
  delete intArray;
  delete myQueue;
}
Run Code Online (Sandbox Code Playgroud)

现在假设这个析构函数工作的boolArrayintArray指针,因为我没有开始变得段错误,直到我说myQueue.有谁知道编写析构函数的正确方法是什么?是否有可能这就是我必须做的事情,并且析构函数在适当的时候没有被调用?

Nav*_*een 7

因为你分配使用new[]你应该delete[] myQueue;在析构函数中.否则它将调用未定义的行为.顺便说一句,std::vector<std::queue<int> >如果你不想得到这种类型的内存管理问题,你可以使用.