删除队列对象数组

2024-05-08

我正在研究一个包含数组的对象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 and int而不是队列。我的析构函数看起来像:

myClass::~myClass(){
  delete boolArray;
  delete intArray;
  delete myQueue;
}

现在我假设这个析构函数正在为boolArray and intArray指针,因为直到我添加之后我才开始出现段错误myQueue。有谁知道编写析构函数的正确方法是什么?有没有可能这就是我所要做的一切,而析构函数只是没有在适当的时间被调用?


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除队列对象数组 的相关文章

随机推荐