728x90
[C언어] C언어의 메모리 관리
함수가 사용될 때 메모리가 얼마나 필요한가? 메인 함수를 구성하고 있는 지역변수와 사이즈를 보면 된다.
운영체제는 메인함수가 실행될 때, 메모리 공간을 확보해둔다. 몇 바이트가 필요한지는 실행해봐야 알 수 있을까?
소스코드 -> 컴파일 => 실행파일 => OS에 의해 실행
컴파일 타임 런타임
컴파일에 의해 미리 알 수 있다. 컴파일러는 정적 분석을 통해 int가 몇 개 있는지를 확인할 수 있다.
그렇기 때문에 런타임 시에 그 함수가 실행될 때, 메모리 안에 그 함수가 필요한 크기 만큼의 집을 마련해준다.
함수라는 집 공간 안에 int i, int j 등의 방이 만들어진다.
그러고 printf 라는 함수가 더해진다고 하면, printf를 위해 만들어 지는 집이 따로 만들어진다.
스택 지역에 printf라는 집이 스택 공간에 쌓이게 된다(main 함수 집 위에)
왜 지역변수를 스택에 쌓을까?
메모리는 최대한 효율적으로 써야 하는데, 데이터가 여기저기 흩뿌려져있으면, 큰 데이터가 들어갈 때, 문제가 생긴다. 그래서 차례대로 메모리 스택 영역에 쌓아 올리는 것이다.
(자바에서 클래스의 메모리 활용에 대해서 더 자세히 다뤄볼 예정이다…)
728x90
'Computer Science' 카테고리의 다른 글
[C언어] 포인터를 사용하는 진짜 쉬운 이유. (0) | 2022.06.29 |
---|---|
[C언어] 포인터 기본 개념 알아보기 (0) | 2022.06.27 |
운영체제 32비트와 64비트의 차이점 (0) | 2022.06.27 |
[컴퓨터구조] CPU와 운영체제 그리고 메모리 (0) | 2022.06.27 |
[C언어] 데이터 타입별 메모리 크기 (0) | 2022.06.25 |
댓글