我第一次在这里发帖!正如标题所说,析构函数在运行程序时崩溃了。没有一个动态分配的元素(可以这样做,但是直到用户填满整数数组之后才会这样做) 这是代码片段:
IntSet::IntSet(int initial_capacity)
{
used = 0;
capacity = initial_capacity;
data = new int[initial_capacity];
}
IntSet::~IntSet()
{
delete [] data;
}
private:
int* data;
int capacity;
int used;
int main()
{
{
IntSet tccSet1 = is1; // This is the assignment operator
IntSet tccSet2 = is2; // is being used
IntSet tccSet3 = is3;
tccSet1.reset();
tccSet2.reset();
tccSet3.reset();
//NOTE, this is where the scope of the objects above end.
//The destructor is called and the program crashes here.
}
{
IntSet taoSet1;
IntSet taoSet2;
IntSet taoSet3;
taoSet1 = is1;
taoSet2 = is2;
taoSet3 = is3;
}
return 0;
}
一些附加说明,当主程序中的第一个代码块运行时,不会发生新的动态分配。在我看来好像析构函数试图删除一个空数组或试图动态分配大小为0的数组。另一个选择是没有动态分配内存。谢谢, 任何帮助将不胜感激。