C언어에서 지역변수는 메모리의 Stack에 저장된다 라는 말을 이해한 내용이다

왜 지역변수를 Stack의 개념으로 메모리에 할당할까 하고 생각하던중에 든 생각

C언어에서

...

main 함수가 있고 main 함수 위에 다른 함수가 존재해 선언 되어있다면 그럼 3개의 함수"main func1 func2 "가 존재한다하고
func1에서 func2 를 호출하여 사용하는 함수이고
3개의 함수 모두 지역변수 이름은 num이라고 할때

main 함수에서 우선 사용된 변수 num(num1로 얘기하자)이
stack에 저장되고
main함수에서 호출한 func1의 변수 num(num2라고 하자)가 stack에
저장되고
func1에서 호출한 func2의 변수 num(num3)가 stack에 저장되고

func2가 종료되서 num(num3)가 사라지고
func1가 종료되서 num(num2)가 사라지고
main 함수가 종료되면서 num(num1)이 사라진다 
                num3
        num2 num2                  num2
num1 num1 num1 로 저장되고 num1 num1 사라진다.

로 이해하였다.

추가로 Stack은 LIFO 방식이며

Stack에 저장되는 다른 정보로는
=지역변수가 반환후 돌아가는 주소
=Stack Frame (경계선정도로 이해하자) 가 있다.

 

 

 

'C언어' 카테고리의 다른 글

Return 0에 관하여  (0) 2015.04.26
Posted by 팡다츄
,