В C каждая функция имеет запись активации, которая размещается в кадре стека.
Нет. Тем не менее, это, как это обычно решается компилятором. По крайней мере, если вы не активировали никаких оптимизаций.
Во-первых, стандарт C вообще ничего не говорит о стеке. Таким образом, ответ на этот вопрос будет о том, как это обычно решается на практике.
И обычно они находятся в сегменте данных или сегменте bss. Типичный макет выглядит так:
Stack - Grows down towards the heap. Used for local variables.
-----
...
...
...
----
Heap - Grows up towards the stack. Used for dynamically allocated memory.
----
BSS - Uninitialized data. Used for uninitialized global and static variables.
----
Data - Initialized data.
----
Text - Runnable code