C ++,析构函数崩溃

时间:2016-02-14 22:14:41

标签: c++ arrays constructor

我第一次在这里发帖!正如标题所说,析构函数在运行程序时崩溃了。没有一个动态分配的元素(可以这样做,但是直到用户填满整数数组之后才会这样做) 这是代码片段:

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的数组。另一个选择是没有动态分配内存。谢谢, 任何帮助将不胜感激。

0 个答案:

没有答案