프로그램이 실행되면 메모리는 4가지 영역으로 나뉜다
- 코드 영역 (Code Area)-> 실행할 프로그램의 코드
- CPU가 직접 실행하는 기계어 코드가 포함된다.
- 데이터 영역 (Data Area) -> 정적 변수(전역 변수, Static선언된 변수)
- 데이터 영역에 있는 변수들은 프로그램의 시작부터 종료까지 계속 유지된다.
- 힙 영역 (Heap Area) -> 동적으로 할당되는 객체, 동적 배열, 구조체, 클래스, 인스턴스, 자료구조
- 동적 할당을 위해서사용되며, 프로그래머가 직접 관리하고 필요에 따라 메모리를 할당하고 해제할 수 있다.
가비지 컬렉터 기능이 있는 언어는 힙 영역의 메모리를 자동 해제합니다.
- 동적 할당을 위해서사용되며, 프로그래머가 직접 관리하고 필요에 따라 메모리를 할당하고 해제할 수 있다.
- 스택 영역 (Stack Area) -> 지역 변수, 함수 호출 정보(반환 주소, 매개변수 등)
- 함수 호출이 발생할 때마다 해당 함수의 반환 주소와 매개변수가 스택에 푸시(push)되고, 함수 호출이 완료되면 스택에서 팝(pop) 된다.
'CS' 카테고리의 다른 글
[자료구조]Array와 Linked List의 차이 (0) | 2023.09.30 |
---|---|
[자료구조] 자료구조와 알고리즘의 개념 (0) | 2023.09.30 |
[프로그래밍] MAS란? 마이크로서비스 아키텍처 (0) | 2023.09.30 |
[프로그래밍] DDD란? (Domain-Driver Design) (0) | 2023.09.29 |
[프로그래밍] 절차지향과 객체지향 프로그래밍이란 (0) | 2023.09.29 |