C++ delete[] аварийно завершает работуC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 C++ delete[] аварийно завершает работу

Сообщение Anonymous »

Я пишу программу на C++, которая хранит строки в массиве строк. Когда массив заполнен, я изменяю размер массива, чтобы освободить место для большего количества элементов, используя приведенный ниже код. Но иногда (не всегда) происходит сбой при «delete[] temp;» линия, и я не знаю, почему и как это исправить. Пожалуйста, помогите.

Я много искал, но нигде не нашел ответа. Когда я отлаживаю, он говорит «неверный указатель», но как он может быть недействительным, если я раньше хранил там данные и еще не освободил их?

Это мой код:

Это мой код:

р>

if(item_cnt >= (arr_size - 1))
{
int oldsize = arr_size;
string * temp;
arr_size *= 2;
temp = arr;
arr = new string [arr_size];
memcpy(arr, temp, oldsize * sizeof(temp));
delete[] temp;
}


Подробнее здесь: https://stackoverflow.com/questions/982 ... te-crashes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»