История изменений
Исправление Kroz, (текущая версия) :
Вот ну очень упрощенная схема без заморочек типа heap, stack и т. п. (да простят меня знатоки)
Ячейки памяти Адрес: 1 2 3 4 5 6 Значение: ? ? ? ? ? ? Код:
Результат: Адрес: 1 2 3 4 5 6 Значение: ? ? ? ? ? ? Компилятор ассоциирует переменную a с адресом 1 Код:int a;
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 Значение: ? ? ? ? ? ? Код:
Результат: Адрес: 1 2 3 4 5 6 Значение: ? ? ? ? ? ? Компилятор ассоциирует переменную a с адресом 1 Код:int a;
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, или даже другой программе.