Я не совсем уверен, что вы спрашиваете, но я постараюсь ответить как можно лучше.
Следующее объявляет переменную i
в стеке:
int i;
Когда я запрашиваю адрес, используя &i
, я получаю фактическое местоположение в стеке.
Когда я выделяю что-то динамически, используя malloc
, на самом деле TWO фрагменты данных, которые хранятся.Динамическая память выделяется в куче, а сам указатель выделяется в стеке.Итак, в этом коде:
int* j = malloc(sizeof(int));
Это место в куче для целого числа.Он также выделяет место в стеке для указателя (j
).Значение переменной j
устанавливается на адрес, возвращаемый malloc
.