이번 시간에는 메모리의 구조와 각 영역에 저장되는 내용을 살펴보겠습니다. 요약한 내용은 위의 사진과 같습니다. 메모리는 아래와 같이 4가지 영역으로 나누어져 있습니다.
Code: 상수, 명령문(코드)을 저장
Data: 전역 변수, 정적 변수를 저장
Heap: 동적 배열(동적 메모리)을 저장
Stack: 지역 변수, 매개 변수, 정적 배열을 저장
그리고 메모리는 아래와 같이 2가지로 나누어집니다.
정적 메모리(static memory): 프로그램이 실행 되자마자 만들어집니다.
동적 메모리(dynamic memory): 프로그램 실행 후 명령문이 실행될 때 만들어집니다.
C++ 소스 코드로 살펴보겠습니다.
#include<iostream>
using namespace std;
int a = 1; // 전역 변수, 실행 되자마자 data 영역에 저장
int b[5]; // 전역 변수, 실행 되자마자 data 영역에 저장
int main(){
int c = 2; // 지역 변수, 실행 되자마자 stack 영역에 저장
int d[5]; // 정적 배열, 실행 되자마자 stack 영역에 저장
static int e = 3; // 정적 변수, 실행 되자마자 data 영역에 저장
a = a + c + e; // 연산, 실행 후 명령문을 만나면 code 영역에 저장
c = 10; // 연산, 실행 후 명령문을 만나면 code 영역에 저장
int* f = new int[5]; // 동적 배열, 실행 후 명령문을 만나면 heap 영역에 저장
delete[] f;
return 0;
}
<출처>
'IT강의 > 프로그래밍언어' 카테고리의 다른 글
Java 메소드 오버로딩 (0) | 2021.08.15 |
---|---|
Java 메소드 오버라이딩 (0) | 2021.08.15 |
객체지향 프로그래밍 언어의 특징 (0) | 2021.07.21 |
2018년도 정보처리기사 실기 2회 문제풀이 및 해설 - 3. Java (0) | 2020.12.27 |
2018년도 정보처리기사 실기 2회 문제풀이 및 해설 - 2. C언어 (0) | 2020.12.27 |