Memory
- 메모리란 데이터를 저장하는 역할을한다.
- 데이터를 읽고, 쓰는 속도가 빨라 CPU가 직접 접근한다.
- 시스템이 종료되면 저장되어있던 데이터는 모두 사라진다.
- 메모리의 영역
- code
- 메모리의 코드영역은 실행할 프로그램의 코드가 저장되는 텍스트(code)영역이다. cpu는 코드영역에 저장된 명령어를 하나씩 가져가 처리한다.
- data
- 프로그램 전역, 정적 변수가 저장되는 영역이다. 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다.
- heap
- 런타임중 자유롭게 할당/해제를 할 수 있는곳이다.
- 사용자가 직접 관리할 수 있는 영역이다.
- 사용자에의해 메모리 공간이 동적으로 할당, 해제된다.
- stack
- stack과 code영역은 컴파일 과정에서 메모리가 할당된다.
- 함수의 호출과 관계되는 지역, 매게변수가 저장되는 영역이다.
- 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸한다.
- 이렇게 stack영역에 저장되는 함수의 호출정보를 *stack frame라 한다.
- stack영역은 push동작으로 데이터를 저장하고, pop동작으로 데이터를 인출한다. 이러한 stack은 후입선출(LIFO) 방식에 따라 동작한다.
*stack frame
- 함수가 호출되면 stack에는 함수의 매개변수, 호출이 끝난 뒤 반환되는 주소값, 함수에 선언된 지역변수 등이 저장된다. 이렇게 차례대로 저장되는 함수의 호출정보를 stack frame라 부른다.
- 이러한 stack frame덕분에 함수의 호출이 모두 끝난 뒤, 해당 함수가 호출되기 이전의 상태로 되돌아 갈 수 있다.
- code