2024/10/07 2

[크래프톤 정글] malloc, calloc, realloc

malloc, calloc, realloc 같은 동적 메모리 할당 함수들은 C 언어의 표준 라이브러리 함수들이다.실제로는 운영체제(OS)에서 제공하는 시스템 호출(syscall)을 통해 메모리를 할당하는 과정으로 이루어진다.1. malloc의 내부 동작malloc은 사용자가 요청한 크기의 메모리를 힙 영역에서 할당하는 함수이다.malloc이 어떤 흐름으로 메모리를 할당하는지 알아보자기본 흐름사용자가 메모리를 요청: malloc에 의해 사용자는 지정한 크기의 메모리를 할당받기를 원한다.힙 영역에서의 메모리 관리: C 프로그램은 스택(Stack)과 힙(Heap)이라는 두 가지 주요 메모리 영역을 사용한다. 힙은 프로그램 실행 중에 동적으로 메모리를 할당하는 데 사용된다. 힙은 연속된 메모리 블록으로 관리되며..

[크래프톤 정글] 가상 메모리 와 페이징 *

64비트 시스템을 기준으로 가상 메모리와 페이지 개념을 다시 정리 해보려 한다.64비트 아키텍처는 약 8TB의 가상 메모리 공간을 지원 한다.1. 64비트 가상 메모리 주소 공간64비트 시스템에서는 가상 주소가 64비트로 표현된다. 이론적으로는 2^64 바이트, 즉 16엑사바이트(EB)의 가상 메모리 공간을 제공할 수 있다.하지만 실제로는 물리적 제약 및 운영체제의 설계에 따라 약 8TB정도(윈도우 기준)가 지원된다.예를 들어, 일반적인 64비트 리눅스 시스템은 48비트나 57비트만을 사용하여 가상 주소 공간을 관리한다.2. 가상 주소의 구조페이지 번호: 가상 주소의 상위 비트는 해당 페이지를 식별하는 데 사용된다.오프셋(Offset): 하위 비트는 페이지 내에서의 위치를 나타낸다.예를 들어, 64비트 ..