모두의 코드 커뮤니티

함수 호출 관련 질문날짜:2020-2-24 6:34:24 조회수:19작성자

함수 호출해서 실행 하는것과 반환 하는것 까지는 알겠는데 그 함수를 호출한 함수의 지역 변수,맴버들은 어떻게 되나요?
메모리 따라가면서 이해하면 되긴 하는데 너무 복잡해서 계속 함수를 호출할때는 이해하기가 힘듭니다. 그리고 클래스 함수를 호출할 때는 어떻게 되나요?

지역 변수들은 해당 함수의 스코프에서 계속 존재합니다. 스코프를 빠져 나가면 해당 지역 변수는 메모리 상에서 소멸됩니다.

예를 들어서

void func1() {
   int a;
   func2();
   // a 는 그대로 있는다. 하지만 b 는 메모리에서 사라짐
}

void func2() {
   int b;
}

위와 같은 형태를 생각해봅시다. func1 안에서 func2 를 호출하였을 때 a 는 메모리 상에서 사라지지 않고 그대로 있습니다 (물론 func2 안에서 a 를 볼 수는 없음). 하지만 func2 의 호출이 끝나고 func1 안으로 돌아왔을 때에는 b 는 메모리에서 사라지게 됩니다.

그래도 이해가 잘 되지 않고 함수가 어떻게 호출되는지 쉽게 설명해 주시면 이해가 될 것 같습니다.
그리고 a가 어떻게 존재하게 되는지 궁금합니다