Источник:отображение памяти для статических переменных
func_1()
{
static int i = 10;
printf("%s : %d\n", __func__, i);
}
func_2()
{
static int i = 20;
printf("%s : %d\n", __func__, i);
}
main() {
static int i = 30;
func_1();
func_2();
printf("%s : %d\n", __func__, i);
}
Выход:
func_1 : 10
func_2 : 20
main : 30
Как компилятор дифференцироваться переменные в сегменте данных по функциям?
Непонятно, что вы просите. Вы спрашиваете, как компилятор знает, в какой области он находится? –
* Как * обработчик компилятора не указан, это зависит от компилятора. До тех пор, пока он ведет себя так, как указано, действительно ли это имеет значение? –
@DavidSchwartz да. также, как извлекается фактическое значение. – codedoc