我正在研究一个包含数组的对象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(使用前将#替换为@)