2014-01-04 3 views
1

У меня есть вопрос в виду: раньше я разобрал простую программу с:Где хранится строка, соответствующая символу char *?

char *tab = "hello"; 

И я увидел, что в отличие от массива, только адрес строки помещается в стек. Так что мне было интересно, где хранится содержимое строки?

+0

Проверьте эту ссылку http://stackoverflow.com/a/18479996/1814023 –

ответ

0

Строка "hello" - это, конечно, статические данные, которые включены в ваш исполняемый файл, стенографически. Эти данные уже доступны в памяти при запуске вашей программы, все статические и постоянные данные. А поскольку вы используете только свой адрес, только тот адрес помещается в стек.

Теперь, если вы создаете массив так:

char tab[] = "hello"; 

компилятору, что вы хотите создать массив в стеке, массив, который вы можете свободно хранить что-либо в вас нравится. И вы сообщаете компилятору инициализировать этот массив с постоянной статической строкой "hello", поэтому он копирует данные из статического хранилища в массив в стеке.

Смежные вопросы