2024/10/16 2

[크래프톤 정글] 동적 메모리 할당기 총정리

블로그 글: 동적 메모리 할당기 총정리: Implicit/Explicit List부터 단편화까지우리가 C언어에서 malloc과 free를 사용할 때, 그저 필요한 메모리를 요청하고 돌려주는 편리한 함수라고 생각하기 쉽습니다. 하지만 그 이면에서는 프로그램의 성능과 안정성을 좌우하는 복잡하고 정교한 동적 메모리 할당기(Dynamic Memory Allocator)가 쉴 새 없이 움직이고 있습니다.이번 포스트에서는 동적 메모리 할당기의 기본 개념부터 대표적인 구현 방식, 그리고 메모리 관리의 영원한 숙적인 단편화(Fragmentation) 문제와 해결책까지, 그 내부 동작 원리를 총정리해 보겠습니다.1. 동적 메모리 할당기의 기본 원리동적 메모리 할당기는 프로그램 실행 중에(runtime) 사용할 메모리 공..

[크래프톤 정글] 컴퓨터 시스템 hello.c 실행 전체 플로우 정리

우리가 프로그램을 실행하기까지의 전체 과정을 설명하면, 먼저 hello.c 파일을 작성한 후 빌드를 시키면 다음과 같은 과정들이 차례대로 진행된다.1. 전처리 과정헤더 파일 확장: #include로 포함된 헤더 파일들이 실제 코드로 확장된다.매크로 확장: #define으로 정의된 매크로가 코드에 삽입된다.주석 제거: 소스 코드 내 모든 주석이 제거된다.이 과정을 통해 전처리가 완료되며, 그 결과물은 .i 파일로 저장된다.2. 컴파일 과정구문 분석: 소스 코드의 문법을 검사하여 파싱한다.구문 트리 생성: 구문 트리를 생성하여 코드의 구조를 분석한다.중간 표현(IR): 구문 트리를 기반으로 중간 표현(Intermediate Representation)으로 변환된다.어셈블리 코드 생성: 중간 표현을 기반으로 ..