Переменное место хранения
Когда мы объявляем переменную как
char arr[] = "Hello";
тогда строка "Hello" выше находится в стеке.
Но когда мы объявляем переменную как
char* arr = "Hello";
тогда строка "Hello" объявляется в стеке или сегменте кода? Если сегмент кода, то почему сегмент кода, а не в стеке?
1 ответ
Нет. Строковый литерал не объявлен ни в одном сегменте.
Он имеет статическую продолжительность хранения и доступен только для чтения.
Поскольку это только для чтения, присваивая его адрес char*
это неверно. Измените это на char const* arr = "...";