Валиден ли такой синтаксис для присваивания строк?
char *str;
str = "first";
str = "second";
Или рано или поздно это обернется ошибкой сегментирования?
Вспоминается, что в книжках писали, что для строк нужно выделять память с помощью malloc. С malloc всё понятно. Самостоятельно выделил, самостоятельно освободил. А что происходит здесь? Компилятор сам выделяет память? А когда str присваивается «second» память занятая «first» освобождается? Откуда выделяется память, из стека или кучи?