AKAPUCH / github-is-god

상황이 이해가 안되? 깃허브에서 무료로 지식을 나눠주고 있잖아
0 stars 0 forks source link

[ios] Copy On Write는 어떤 방식으로 동작하는지 설명하시오. #3

Closed AKAPUCH closed 1 year ago

AKAPUCH commented 1 year ago

Copy On Write는 어떤 방식으로 동작하는지 설명하시오.

관련 링크

AKAPUCH commented 1 year ago

값 타입과 참조타입

그래서 Copy-On-Write가 뭔데?

어차피 복사할껀데 무슨 의미가 있지?

AKAPUCH commented 1 year ago

부록

Q : String의 경우 예외로 짧은 문자열(길이 15이하)은 스택에 저장되고 실제로 짧은 문자열에서 실험해보니 주소가 달라요! 그럼 짧은 문자열은 copy-on-write가 발생하지 않는건가요?

A : 아닙니다. 실험에서 다르다고 확인된 주소는 사실 스택의 주소입니다. 문자열의 경우 짧은 문자열은 스택에 공간이 할당되는 것은 맞는 말이지만, 사실 힙 영역 내부 MALLOC_TINY 영역에도 저장된다고 하네요. 그래서 실험에서처럼 str2str1 을 할당하면 다른 스택 영역을 주소로 사용하게 되나, 힙 영역은 MALLOC_TINYstr1이 저장된 주소와 같은 주소를 사용하게 됩니다. 이때 문자열에 변화를 가하게 되면 그제서야 새로운 힙 영역 주소를 사용하게 되면서 copy-on-write가 발생할 것입니다.