在C ++中按元素将一个指针复制到另一个元素并在`./hsc.exe'中出现错误:双重释放或损坏(!prev):0x0000000000aadcc0 *** 中止(核心倾销)"。
我试图对它进行调试,但我遇到了问题,并且删除了[]棒;"我不能删除棒,因为我也删除了与" temp"相关的信息。
以下是代码的以下部分。
int * rods; // Defining rods and temp
int * temp;
int N_r =5;
rods = new int[N_r];
temp = new int[N_r];
for (int i = 0; i < N_r; i++){ // Copying rods to temp
temp[i] = rods[i];
}
delete[] rods; // deleting rods
rods = NULL;
rods = new int[N_r]; // creating new rods
for (int i = 0; i < N_r; i++){ // copying temp to rods
rods[i] = temp[i];
}
delete[] temp; // delete temp
temp = NULL;
答案 0 :(得分:0)
双重免费或损坏错误:
有可能这是由于浅拷贝造成的。你应该使用overloaded = operator。
rods[i]= temp[i];
可能导致这种情况,并且两个对象都将数据成员指向同一位置,当您从两者中调用delete时,您将释放两次分配的内存。请参阅COpy构造函数和重载=运算符。