[자료구조] 배열(Array) by JS
📄 배열
배열은 일반적으로 프로그래밍 언어에서 기본적으로 제공하는 자료구조입니다.
일반적인 배열과 자바스크립트의 배열은 메모리에 값을 할당하는 방식이 다릅니다.
📄 일반적인 배열 | 연속적 저장
일반적으로 배열을 만들 때는 배열의 크기를 정해서 선언합니다.
int arr[8] = {1,2,3,4,5}
배열을 선언했을 때 운영체제는 값을 메모리에 연속적인 형태로 저장합니다.
예시와 같이 크기가 8인 배열을 선언했을 때 숫자가 8개 들어갈 수 있는 연속된 빈공간을 찾아 값을 할당하게 됩니다.
할당하지 않은 부분에는 의미없는 쓰레기값이 저장됩니다.
이렇게 값을 미리 할당하면 문제가 생깁니다.
선언한 크기보다 더 큰 값을 배열에 저장한다면, 운영체제는 크기에 맞는 메모리를 다시 찾아서 값을 할당합니다.
기존에 존재했던 값들도 복사해서 새로 만든 공간에 저장하게 됩니다.
따라서 배열은 참조에는 O(1)의 성능을 가지지만, 배열의 크기를 변경하게 되는 삽입, 삭제 성능은 좋지 않다고 할 수 있습니다. 크기 예측이 힘들기 때문에 메모리 낭비가 발생할 수 있기 때문입니다.
자바스크립트의 배열 | 불연속적 저장
반면에 자바스크립트는 배열을 선언할때 크기를 지정하지 않습니다. 자바스크립트의 배열은 값을 선형이 아닌 불연속적으로 할당합니다.
따라서 더 큰값을 배열에 저장한다고 해서 새로운 메모리를 찾지 않습니다.
Leave a comment