Копирование одного указателя на другой элемент по элементу на C++ и получение «Ошибка в` ./hsc.exe »: двойная свобода или коррупция (! Prev): 0x0000000000aadcc0 *** Aborted (core dumped)».Копирование и удаление указателей с помощью массивов
Я попытался отладить его, и я застрял на линии «удалить [] стержни;» поскольку я не могу удалить стержни, поскольку я также удаляю информацию, относящуюся к «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;
Вы используете какой-либо язык программирования в частности? –
Вы должны были создать простой пример, который может быть скомпилирован независимо и воспроизводит проблему. Тем не менее, то, как вы играете с родными массивами, необработанными указателями, новыми, копиями и удалениями, почти неизбежно приводит к неприятностям. Это просто небезопасно. –
temp [i] = стержни [i]; есть возможность неглубокой копии, поэтому может быть шанс, что вы дважды освобождаете память. – evk1206