////
Search
Duplicate
🎐

Chapter 04. 네모난 메모리를 동그랗게 사용하기

01. 메모리 IC로 채워진 메모리 구조 살펴보기

메모리의 실체는 전자 부품인 메모리 IC다. 메모리 IC에는 DRAM ,SRAM, ROM 등 여러 종류가 있으나 기본적인 구조는 모두 같다.
메모리 IC는 전원, 어드레스 신호, 데이터 신호 및 제어 신호 등을 입출력하기 위한 많은 핀을 가지고 있으며 그 핀에 어드레스를 지정해 데이터를 읽고 쓸 수 있도록 되어 있다.

02. 메모리는 데이터를 저장하는 빌딩

프로그래머의 입장에서 메모리는 데이터를 저장하는 빌딩이라고 생가갛면 된다. 1KB 용량의 메모리라면 각 층의 주소가 00000000000부터 1111111111인 1,024층짜리 빌딩으로 나타낼 수 있다.

03. 메모리 어드레스를 저장하는 변수, 포인터!

포인터란 데이터 값 자체가 아니라 데이터가 저장되어 있는 메모리의 어드레스를 가지고 있는 변수를 말한다.
따라서 포인터를 사용하면 임의의 어드레스를 지정해서 그 곳에 담긴 데이터를 읽고 쓰는 일이 가능해진다.

04. 배열로 메모리를 효율적으로 사용하자!

배열이란 같은 데이터형을 가진 여러 개의 데이터가 메모리 안에 쭉 나열되어 있는 것을 말한다.
배열의 요소가 되는 각각의 데이터는 처음부터 시작해서 일련 번호로 구분되는 데, 이 번호를 인덱스라고 부른다.
인덱스를 지정하면 그에 대응하는 메모리 영역을 읽고 쓸 수 있다. 인덱스와 실제 메모리 어드레스 간의 변환 작업은 컴파일러가 자동으로 수행한다.
배열이 메모리 사용법이 기본이 되는 이유는 메모리의 실제 구조와 매우 닮았기 때문이다.

05. 스택과 큐로 메모리를 렌트하자!

스택과 큐를 이용하면 어드레스와 인덱스를 지정하지 않고도 배열의 요소를 읽고 쓸 수 있다.
보통 계산 도중 데이터를 임시로 보관하거나 컴퓨터에 접속된 장치의 입출력 데이터 등을 일시적으로 저장할 경우 스택과 큐를 통해 메모리를 사용한다.

06. 리스트가 있어 데이터 추가 삭제가 쉬워진다.

리스트와 이진 탐색 트리는 모두 인덱스의 순서와는 무관하게 배열의 요소에 담긴 내용을 읽고 쓰기 위한 것이다.
이때 리스트를 사용하면 배열에 데이터를 추가하거나 삭제하는 작업을 좀더 효율적으로 할 수 있다.
리스트는 각각의 배열 요소에 데이터뿐만 아니라 다음 요소의 인덱스도 추가해서 만들어진다. 따라서 데이터 삭제나 추가에서 강점을 보인다.

07. 리스트의 업그레이드, 이진 탐색 트리

배열에 요소를 추가할 때 요소에 저장된 값의 크기에 따라 좌우 두 방향으로 나누어지는 리스트를 만든 것이다.