반응형
프로그램 실행 → 운영체제가 프로그램 실행을 위한 메모리 공간을 마련 → 변수, 문자열 등은 메모리 공간 내 선언된다
메모리의 구조
프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 불러와(load)져야 한다
이 때 프로그램에서 사용될 변수들을 저장할 메모리도 필요하다
따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공(할당)한다
어떤 메모리 공간?
1. 코드(code) 영역
2. 데이터(data) 영역
3. 스택(stack) 영역
4. 힙(heap) 영역
왜 나눠?
유사한 성향의 데이터를 묶어 저장하면, 관리가 용이해지고 메모리의 접근속도가 향상되기 때문 !
ex) 서랍장의 수납공간이 나눠져있으면 물건을 찾을 때 한결 수월한 것
자세히 봐보자
1) 코드(code)영역
실행할 프로그램의 코드가 저장되는 메모리 공간
CPU는 코드 영역에 저장된 명령문들을 하나씩 가져가서 실행한다.
2. 데이터(data) 영역
프로그램 시작과 동시에 전역변수와 static으로 선언되는 static변수가 메모리 공간에 할당되어 운영체제가 할당된 메모리 공간 전체를 반환하는 프로그램 종료 시까지 남아있음
3. 스택(stack) 영역
지역변수와 매개변수가 할당된다. 선언된 함수를 빠져나가면 소멸됨
4. 힙(heap) 영역
프로그래머가 원하는 시점에 변수를 할당하고 소멸하도록 지원하는 메모리 공간
ex) 동적 메모리
http://tcpschool.com/c/c_memory_malloc
반응형
'자바 Java' 카테고리의 다른 글
다중 포인터 (0) | 2019.10.06 |
---|---|
배열 / 다차원 배열 ( 2차원 배열 / 3차원 배열 ) (0) | 2019.10.05 |
typedef (0) | 2019.10.05 |
main method가 있는 class와 object를 생성하는 class와의 관계 (0) | 2019.10.02 |
클래스와 객체 ( 배열 변수 / 객체 배열 / 접근 제어자 ) (0) | 2019.09.29 |
댓글