본문 바로가기
Computer Science

[C언어] C언어의 메모리 관리

by DuncanKim 2022. 6. 27.
728x90

[C언어] C언어의 메모리 관리

 

함수가 사용될 때 메모리가 얼마나 필요한가? 메인 함수를 구성하고 있는 지역변수와 사이즈를 보면 된다.

 

운영체제는 메인함수가 실행될 때, 메모리 공간을 확보해둔다. 몇 바이트가 필요한지는 실행해봐야 알 수 있을까?

소스코드 -> 컴파일 => 실행파일 => OS에 의해 실행 
               컴파일 타임                            런타임

컴파일에 의해 미리 알 수 있다. 컴파일러는 정적 분석을 통해 int가 몇 개 있는지를 확인할 수 있다.

 

그렇기 때문에 런타임 시에 그 함수가 실행될 때, 메모리 안에 그 함수가 필요한 크기 만큼의 집을 마련해준다.

함수라는 집 공간 안에 int i, int j 등의 방이 만들어진다.

 

그러고 printf 라는 함수가 더해진다고 하면, printf를 위해 만들어 지는 집이 따로 만들어진다.

스택 지역에 printf라는 집이 스택 공간에 쌓이게 된다(main 함수 집 위에)

 

왜 지역변수를 스택에 쌓을까?

메모리는 최대한 효율적으로 써야 하는데, 데이터가 여기저기 흩뿌려져있으면, 큰 데이터가 들어갈 때, 문제가 생긴다. 그래서 차례대로 메모리 스택 영역에 쌓아 올리는 것이다.

 

(자바에서 클래스의 메모리 활용에 대해서 더 자세히 다뤄볼 예정이다…)

728x90

댓글