LINUX.ORG.RU

История изменений

Исправление Kroz, (текущая версия) :

Вот ну очень упрощенная схема без заморочек типа heap, stack и т. п. (да простят меня знатоки)

Ячейки памяти
Адрес:      1   2   3   4   5   6
Значение:   ?   ?   ?   ?   ?   ?

Код:
int a;
Результат:
Адрес:      1   2   3   4   5   6
Значение:   ?   ?   ?   ?   ?   ?
Компилятор ассоциирует переменную a с адресом 1

Код:
a = 9;
Результат:
Адрес:      1   2   3   4   5   6
Значение:   9   ?   ?   ?   ?   ?

Код:
int *p;
Результат:
Адрес:      1   2   3   4   5   6
Значение:   9   ?   ?   ?   ?   ?
Компилятор ассоциирует переменную p с адресом 2

Код:
p = new int;
Результат:
Адрес:      1   2   3   4   5   6
Значение:   9   5   ?   ?   ?   ?
За программой закреплено 3 ячейки памяти: 1 (для a), 2 (для p), 5 (выделенная динамически)

Код:
*p = 8;
Результат:
Адрес:      1   2   3   4   5   6
Значение:   9   5   ?   ?   8   ?

Код:
delete p;
Результат:
Адрес:      1   2   3   4   5   6
Значение:   9   5   ?   ?   8   ?
За программой закреплено 2 ячейки памяти: 1 (для a), 2 (для p).
Ячейка 5 может быть выделена другой переменной с помощью new, или даже другой программе. 

Исходная версия Kroz, :

Вот ну очень упрощенная схема без заморочек типа heap, stack и т. п. (да простят меня знатоки)

Ячейки памяти
Адрес:      1   2   3   4   5   6
Значение:   ?   ?   ?   ?   ?   ?

Код:
int a;
Результат:
Адрес:      1   2   3   4   5   6
Значение:   ?   ?   ?   ?   ?   ?
Компилятор ассоциирует переменную a с адресом 1

Код:
a = 9;
Результат:
Адрес:      1   2   3   4   5   6
Значение:   9   ?   ?   ?   ?   ?

Код:
int *p;
Результат:
Адрес:      1   2   3   4   5   6
Значение:   9   ?   ?   ?   ?   ?
Компилятор ассоциирует переменную p с адресом 2

Код:
p = new int;
Результат:
Адрес:      1   2   3   4   5   6
Значение:   9   5   ?   ?   ?   ?
За программой закреплено 3 ячейки памяти: 1 (для a), 2 (для p), 5 (выделенная динамически)

Код:
*p = 8;
Результат:
Адрес:      1   2   3   4   5   6
Значение:   9   5   ?   ?   8   ?

Код:
delete p;
Результат:
Адрес:      1   2   3   4   5   6
Значение:   9   5   ?   ?   8   ?
За программой закреплено 2 ячейки памяти: 1 (для a), 2 (для p).
Ячейка 5 может быть выделена дугой переменной с помощью new, или даже другой программе.