Почему при команде delete[] выходит ошибка?

191
30 января 2018, 10:42
char *str3 = new char[SIZE];
str3 = "Amygdala";
delete[] str3; // Здесь ошибка

Пожалуйста, объясните что не так.

Answer 1

Что происходит?

char *str3 = new char[SIZE];

Вы выделяете память и присваиваете указатель на этот блок переменной str3

str3 = "Amygdala";

Вы присваиваете переменной str3 указатель на константную строку

delete[] str3;

Вы пытаетесь удалить указатель на константную строку.

Что нужно делать? Нужно после выделения памяти скопировать туда необходимое содержимое. Сделать это можно функцией

strcpy(str3, "Amygdala")

или подобными.

И, кстати, сравнивать строки нужно тоже по содержимому.

strcpy(str3, "Amygdala");
bool test1 = str3 == "Amygdala";
bool test2 = strcmp(str3, "Amygdala") == 0;

test1 будет равно false, а test2 true

READ ALSO
с++ детект и закрытие процессов [требует правки]

с++ детект и закрытие процессов [требует правки]

Нужно написать dll которая будет детектить процессы по имени окна и классамИ закрывать приложение в которое она подключена после детекта...

195
Дано радиус круга и сторона квадрата. Сравнить периметр указанных фигур на с++ [требует правки]

Дано радиус круга и сторона квадрата. Сравнить периметр указанных фигур на с++ [требует правки]

Мне нужна программа на с++ Дано радиус круга и сторона квадратаСравнить периметр указанных фигур Желательно скрин кода программы

216
Непонятный момент при выводе в консоль

Непонятный момент при выводе в консоль

Здравствуйте, задаю фиксированный размер консоли с помощью

287