Я некоторое время программировал на C (но все еще довольно новичок в C), и иногда меня путает то, как C обрабатывает память.
Рассмотрим следующий допустимый фрагмент кода C:
const char *string(void)
{
/* where is this pointer variable located in the memory? */
const char *s;
/* where is this text data located in the memory? */
/* and when the program allocates memory for it? */
s = "Hello, World";
return s;
}
int main(void)
{
printf( "%s", string() );
return 0;
}
Я спрашиваю, что именно происходит в памяти? Разве переменная-указатель не является локальной переменной или где переменная-указатель хранится в памяти. Также, где в памяти хранится текстовая константа «Hello, World» (не считается ли это локальной переменной, недоступной после возврата из функции)?
В основном, какие переменные / данные считаются «локальными» объем функций (перестает быть доступным после возврата из функции)?
Надеюсь, вы понимаете, о чем я пытаюсь сказать: D .. Я думаю, мне нужно многое узнать о компиляторах и исполняемых файлах, так что не стесняйтесь просветить меня!