[자료구조] 동적 메모리 할당
·
공부/자료구조
☑️ 동적 메모리 할당동적 메모리 할당은 C언어에만 한정된 개념이 아니라, 다양한 프로그래밍 언어에서도 사용되고 있는 개념이다. 동적 메모리 할당의 내용과 사용 방법 자체는 어렵지 않다. 이 개념은 프로그램이 실행 중(런타임)에 있을 때, 필요한 시점에서 메모리를 할당 받고 필요하지 않은 시점에서 할당 받은 메모리를 반환하는 것을 의미한다. 반대되는 개념으로는 정적 메모리 할당이 있다. 🟧 동적 메모리 할당의 장점프로그램이 실행되는 동안에 원하는 크기의 메모리를 할당 받을 수 있어 유연성이 높아진다. 사용자의 입력에 따라 메모리 크기를 가지는 가변 크기의 자료구조를 구현할 수 있다. 🟧 동적 메모리 할당의 단점만약, 메모리를 할당하고 할당 해제하는 것을 까먹는다면 메모리 누수가 생긴다. 🟧 가비지 ..
[자료구조] 배열이란 무엇인가?
·
공부/자료구조
☑️ 배열이란 무엇인가?배열은 연속된 자료구조(Contiguous Data Structures)를 가지는 대표적인 예시다. 연속된 자료구조는 단일 메모리 청크에 모든 원소를 저장하며, 모든 원소의 접근 소요 시간은 일정하게 O(1)을 가진다. 또, 연속된 자료구조의 특징으로 캐시 지역성(Cache Locality)이 있는데, 이는 연속된 자료구조의 특성 상, 원소와 원소가 인접하기 때문에 주변 원소에 접근할 때 빠르게 접근할 수 있도록 원소 하나를 가져올 때, 주변 원소를 캐쉬(Cache)에 가져오는 것이다. 위의 설명한 특성들로 인해서 배열의 원소들은 각자 같은 크기의 메모리 공간을 가지는데, 이 공간들은 연속성을 가진다. 그렇기 때문에 다음과 같은 수식을 통해서 인덱스의 위치를 찾을 수 있다.배열 원..