스택 프레임(Stack Frame)
- 하나의 메소드에 필요한 메모리 덩어리
- 함수가 호출될때 스택에 매개 변수, 지역 변수, 복귀 주소가 스택에 저장된다.
- 백트래킹에 사용된다.
구성 요소
- 매개 변수
- 지역 변수
- 복귀 주소
스택 프레임 예제1 - 재귀함수를 이용해서 1~N까지의 수 더하기
public class Solution {
public void DFS(int n){
if(n==0) return;
else {
DFS(n-1);
System.out.print(n+" ");
}
}
public static void main(String[] args) {
Solution T = new Solution();
T.DFS(3);
}
}
- DFS(3) 이 main 함수에서 실행
- DFS함수에서 DFS(3)이 5번째 줄에서 DFS(2) -> DFS(1)으로 넘어간다.
- DFS(0)에서 return으로 함수를 탈출하면서
- 스택에 쌓여있던 DFS(3), DFS(2), DFS(1)이 위에부터 pop으로 제거된다.
출력
- 1 2 3
스택 프레임 예제2 - 재귀함수를 이용해서 10진수 -> 2진수
public class Solution {
public void DFS(int n){
if(n==0) return;
else {
// System.out.print(n%2); 1101으로 출력됨
DFS(n/2); // 스택프레임으로 인해서 1011으로 출력됨
}
}
public static void main(String[] args) {
Solution T = new Solution();
T.DFS(11);
}
}
'프로그래밍 > JAVA' 카테고리의 다른 글
[Java] 스레드의 동기화 synchronized (0) | 2022.07.17 |
---|---|
[JAVA] 스레드 vs 프로세스, 동시성 vs 병렬성, 데몬 스레드 (0) | 2022.07.14 |
[자바의 정석] 연습문제 2. 연산자 (0) | 2022.06.23 |
[자바의 정석] 연습문제 1.변수와 타입 (0) | 2022.06.23 |
[JAVA] 자바 메모리 구조 - Heap, Stack, JVM, GC (0) | 2022.06.23 |