copy on write. 수정할 때 복사한다 라는 뜻.
예를들어
배열이나 스트링의 경우 크기가 동적이라 힙 메모리에 저장하게 되는데
이 때
var a = [1,2,3,4,5]
var b = a
var c = a
값을 복사해야 할 경우에 바로 값을 복사해서 힙 메모리를 새로 할당해서 주는 것이 아니라
최초로 수정이 일어날 때까지 유예하는 것이다. 그러면 쪼~끔 이점을 볼 수 있다.
배열이나 스트링의 경우, 값이 추가되고 삭제되는 등
크기가 동적이기 때문에 동적 메모리 할당을 해주어야 한다.
스택 메모리에서는 동적 메모리 할당이 불가능하기 때문.
스택 메모리의 총 크기는 프로그램이 실행될 때 크기가 결정된다.
그리고 지역변수, 함수호출 프레임이나 기타 임시 데이터가 저장되는데
함수가 호출되고 해제되면서 스택의 크기를 늘렸다 줄였다 한다
스택 메모리는 이렇게 신속하게 액세스하고 빠르고 효율적으로 저장하기위해 설계되었기 때문에
메모리가 동적으로 할당되고 해제되는 기능은 적합하지 않다
그래서 불가능하게 두었고 동적 메모리 할당은 힙 메모리에서 하도록 했다