Указатели и область памяти

Я некоторое время программировал на 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 .. Я думаю, мне нужно многое узнать о компиляторах и исполняемых файлах, так что не стесняйтесь просветить меня!

7
задан Phil Miller 25 March 2011 в 04:02
поделиться