@pixik

Освобождается ли память по завершению выполнения функции, если массив инициализировать внутри функции?

Добрый день!
Есть такой код:
void fun() {
...
char * a = "hello!";
... 
}

Где в таком случае выделяется память для a?
  • Вопрос задан
  • 222 просмотра
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
char * a = "hello!";
Для указателя a — разумеется, на стеке.
Строка, на которую он смотрит, "hello",— строковый литерал. Для него память изначально, при пуске программы выделена в сегменте данных. Освобождать не надо. На многих платформах — хоть на это рассчитывать не надо — этот сегмент защищается от записи и при попытке туда записать AV.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
BuriK666
@BuriK666
Компьютерный псих
Комментировать
Daniro_San
@Daniro_San
Программист
char * a = "hello!";
Примерно аналогичен
static char arr[]="hello";
char *a=arr;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы