尝试删除数组时导致分段错误的析构函数

时间:2015-11-29 15:07:07

标签: c++ arrays segmentation-fault destructor core

对于类,我必须设计一个接受两个数组的类,并对它们执行几个运算符重载方法:例如union,intersection,equality,inequality等。其中两个函数涉及向数组添加元素,另一个涉及从数组中删除一个元素。我的这些功能涉及删除集合并基于添加的元素或删除元素创建新集合。但是,每次尝试使用析构函数时都会出现问题。它会导致分段错误,导致程序无法正常运行。但是,如果我注释掉析构函数,一切都会顺利进行。我不确定这个析构函数导致了什么问题。

我知道可能有一种方法可以使用C ++标准库中的算法从数组中添加和删除元素,但我们不允许将这些用于此特定分配。任何有关这方面的帮助将不胜感激!

这是析构函数:

Set::~Set(){

if(set)
    delete [] set;

set = NULL;
   }

以下是从数组中删除元素的功能:

Set Set::operator-(int n) {
for (int i=0; i < pSize; i++){
    if (elementIn(n)){
        delete set[i];
        pSize --;
    }
}
    return(*this);
  }

这是向元素添加元素的函数:

bool Set::operator+(int element){

bool retstat = false;

if(!elementIn(element)){
    int *newarray = new int[pSize + 1];

for(int i =0; i < pSize + 1; i++){

newarray[i] = set[i];

set = newarray;

pSize += 1;

}

retstat = true;
}

return retstat;
}

0 个答案:

没有答案