c++ - 删除队列对象数组

标签 c++ arrays pointers queue delete-operator

我正在处理一个包含 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/

相关文章:

c++ - 您将什么称为单个 header ,其目的是包含其他 header 文件?

c++ 每 10 分钟运行一次

arrays - 将数组插入数组 perl

java - 将对象数组转换为字符串数组

c - 在 C 中初始化指向复合文字的指针

C-传递和引用结构数组

c++ - C 带有 char[] 的减法

c++ - 如何获得 n 嵌套 vector 的最内层类型?

c++ - Qt 设计器 Q PaintError

c++ - 如何在动态数组中查找元素的数量