使用数组复制和删除指针

时间:2016-02-12 09:01:40

标签: c++ pointers copying

在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;

1 个答案:

答案 0 :(得分:0)

双重免费或损坏错误:

有可能这是由于浅拷贝造成的。你应该使用overloaded = operator。

rods[i]= temp[i];

可能导致这种情况,并且两个对象都将数据成员指向同一位置,当您从两者中调用delete时,您将释放两次分配的内存。请参阅COpy构造函数和重载=运算符。