Fodo Dev
248 words
1 minutes
C언어 메모리 영역
2024-06-23

TL;DR#

리눅스에서 각 메모리 영역은 용도에 따라 나눠져있다.

Code#

실행할 수 있는 코드가 저장되는 영역이다.

int main (){ return 1; } // 해당 함수가 컴파일되면 코드 세그먼트에 저장된다.

Rodata (Read-only data)#

값이 변하지 않는 전역 상수와 같은 데이터가 저장되는 영역이다.

const int EXAMPLE = 5;
char[] string = "readonly"; // 상수 문자열로 취급된다.

Data#

쓰기 가능한 전역 변수가 저장되는 영역이다.

int example = 5;

BSS#

컴파일 시점에 값이 정해지지 않는 초기화되지 않은 전역변수와 같은 데이터가 저장되는 영역이다.

int example;

Heap#

실행 중에 동적으로 할당되는 데이터가 저장되는 영역이다.

int *ptr = (*int) malloc(sizeof(int) * 4);

Stack#

함수의 파라미터나 지역 변수같은 데이터가 저장되는 영역이다.

void say(int name){
	int status = 404;
}
C언어 메모리 영역
https://fodo.dev/posts/algorithm/cpp-memory-layout/
Author
NaN
Published at
2024-06-23