Вот таблица, в которой отслеживаются объекты, на которые указывают person1
и person2
по мере выполнения кода:
// code | person1 points to: | person2 points to:
// -----------------------+--------------------+--------------------
// start | 0xXXXXXXXXXXXXXXXX | 0xXXXXXXXXXXXXXXXX
var person1 = Person() // | 0x0000600000043ea0 | 0xXXXXXXXXXXXXXXXX
let person2 = person1 // | 0x0000600000043ea0 | 0x0000600000043ea0
person1 = Person() // | 0x00006000000568f0 | 0x0000600000043ea0
X
s представляют неинициализированную память, которая может иметь любое значение (из того, что было там ранее сохранено).
person1
и person2
- это переменные, которые хранятся в стеке, содержимое которых является адресами (ссылками на) Person
объектов. Для ясности давайте назовем Person
имена объектов:
- Персона Объект
X
, в 0x0000600000043ea0
- Персона Объект
Y
, в 0x00006000000568f0