우물 밖 병아리

[자료구조] 메모리 할당(Memory Allocation), 일차원/이차원 배열 본문

CS/자료구조

[자료구조] 메모리 할당(Memory Allocation), 일차원/이차원 배열

HOY01 2024. 3. 11. 20:11

*개인 학습 목적으로 정리한 글입니다. 오류가 있다면 부담없이 지적해주세요, 감사합니다.*

벌써 힘들어요...

**자료구조 학습의 목적 중 하나: 효율적 프로그램 작성

== 적은 자원(시간, 메모리)로 높은 효율을 내기 위함

 

1. 메모리 할당

*간략한 컴퓨터 구조

유저가 OS에서 LoL 실행 명령 ---> HDD(Disk Drive)에서 Memory로 LoL을 로드 ---> CPU가 Memory의 데이터를 이용해 LoL을 실행

 

 

- 프로그램이 실행될 때 OS는 자동적으로 실행에 필요한 메모리를 할당함

(여기서 program = 명령어 + 데이터)

- 오브젝트가 생성되면 멤버들에게도 메모리가 할당됨


1.1. 일차원 배열

** 논리적 개념

- 유한하고 고정된 크기, 같은 자료형의 요소들을 담음

- 인덱스를 사용하면 요소에 직접 접근 가능

- 데이터 요소를 저장하는 자연적 구조(?)

ex) 식료품 리스트, 학생 성적 리스트 등

 

** 구현

Address[index] = BaseAddress + Index * SizeOfElement

이때 BaseAddress는 첫번째 요소의 메모리상 위치를 말함


1.2 이차원 배열

** 논리적 개념

- 유한하고 고정된 크기를 가지며, 같은 자료형의 요소들을 담는 구조

- 2차원으로 정렬된 인덱스를 통해 요소에 직접적으로 접근 가능

- 생성 등의 연산이 인덱스 쌍(행, 열)의 선언으로 이루어짐

 

** 구현

- 실제 메모리에 C++은 2차원 배열을 선형적 구조로 저장

BaseAddress == 2000

row * [# of column] * SizeOfElement == 3 * 12 * 4(byte)

column * SizeOfElement == 7 * 4(byte)

 

계산 연습해보기~