Swift: Copy On Write / COW

Wooyo·2023년 10월 24일
0
post-thumbnail

1. Copy On Write

  • 인스턴스 복사 시 참조를 통해 불필요한 복사를 줄이고 수정이 발생한 경우에만 실제로 복사하는 방식
  • 스위프트에서는 기본적 Collection 타입의 COW가 구현
var array1: [Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(UnsafeRawPointer(array1)) // 0x0000000100704210

var array2 = array1
print(UnsafeRawPointer(array2)) // 0x0000000100704210

array2.removeLast() // Copy-on-Write
print(UnsafeRawPointer(array1)) // 0x0000000100704210
print(UnsafeRawPointer(array2)) // 0x0000000100404e70
  • array1 선언 후 array2에 array1을 할당하면 두 인스턴스 주소값이 동일
  • array2의 수정이 발생하면 참조를 끊고 다른 메모리 공간 할당
  • UnsafeRawPointer: 메모리 데이터에 접근 할 수 있는 포인터
profile
Wooyo의 개발 블로그

0개의 댓글

Powered by GraphCDN, the GraphQL CDN