Daily iOS
메모리·ARC

struct 복사와 COW 버퍼 주소

struct Example { var a: Int; var tags: [String] }
let s1 = Example(a: 1, tags: ["x"])
var s2 = s1
s2.a = 9

s2.a = 9 이후 s1.a·s2.a가 저장된 주소와 tags 배열의 버퍼 주소는 각각 같은가요, 다른가요?

면접관은 이 답을 어떻게 들을까요? 넘어갈지, 더 물어볼지, 떨어뜨릴지 알려 주고, 걸리는 문장은 콕 집어 줘요. 점수는 그대로예요.
짧은 답 보기

s1과 s2는 별개의 값이라 a는 처음부터 다른 주소(인라인 복사). tags는 Array struct는 복사되지만 힙 버퍼는 공유되어 주소가 같고, s2.tags를 변경하는 순간 COW로 복사된다.

받은 질문 공유