char *str3 = new char[SIZE];
str3 = "Amygdala";
delete[] str3; // Здесь ошибка
Пожалуйста, объясните что не так.
Что происходит?
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
Сборка персонального компьютера от Artline: умный выбор для современных пользователей