Swift

[Swift] COW 동작 원리

양밀루 2025. 5. 26. 22:13

Swift의 String과 CollectionType(Array, Dictionary, Set) 등은 struct로 구현된 값 타입
COW(Copy-on-Write) 최적화 덕분에 값 타입처럼 동작하면서도 실제 복사는 필요할 때만 일어남

 

var a = [1, 2, 3]
var b = a       // 힙 메모리를 참조만 공유 (복사 X)
b.append(4)     // 쓰기 시점에 복사 발생 (COW)
  • b가 수정되기 전까지는 a와 동일한 힙 메모리 참조를 공유
  • b.append(4) 시점에 Swift는 복사본을 생성하고 변경 작업을 수행

불필요한 복사를 줄이면서도 값 타입처럼 안전하게 동작