Я пишу программу на 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