본문 바로가기

IT/Java

메모리 구조(코드, 데이터, 스택, 힙)

1. 코드 영역

우리가 작성한 소스코드가 저장되고, CPU가 여기에 저장된 코드들을 읽어서 프로그램을 실행

 

2. 데이터 영역

이 부분의 데이터들은 프로그램이 실행됨과 동시에 자리를 잡고 있다가 프로그램이 종료될 때까지 지워지지 않을 데이터를 저장하는 공간. 대표적으로 전역변수와 static으로 선언되는 변수를 저장 함.

 

3. 스택 영역

아주 잠깐 사용하고 삭제할 데이터를 저장하는 공간. 지역변수나 매개변수가 대표적인 예

- 삽입과 삭제가 한 쪽 끝에서만 이루어진다. (Last in First Out: 나중에 들어간 값이 먼저 나옴)

- push : 스택에서 데이터를 넣는 동작

- pop : 스택에서 데이터를 빼는 동작

 

4. 힙 영역

동적 메모리 할당을 위한 곳. 사용자의 의사에 의해 원하는 데이터를 사용자 정의에 의해 할당된 메모리에 저장하거나 해제함

- ex) char *p = new char[1000]