쓰기 시 복사
Swift에서는 값 타입의 복사 시에 COW 작업이 이루어진다.
아래와 같이 array1 배열의 값을 array2에 할당할 경우
Array는 값타입이기 때문에 값이 복사되어, 아래 그림과 같이 두 변수가 다른 값을 가지고 있을 것이라고 생각할 겻이다.

var array1: [Int] = [1, 2, 3, 4]
var array2: [Int] = array1
💡 하지만 실제로는 array2는 array1을 참조하고 있는 형태가 된다.

그러다가 array1이나 array2 중 아무 곳에서나 수정이 생길 경우, 그제서야 진짜 값이 복사되어 복사된 값이 메모리에 할당된다.

👉 즉 처음 값 복사 시에는 참조만 하고 있다가, 둘 중 한 곳에서 수정이 생기면 그때 실제로 값이 복사되어 서로 다른 값을 바라보게 되는 것이다.
코드를 통해 실제 메모리 주소값을 확인해보면 다음과 같다.