작성
·
155
0
"function은 처음에 프로그램과 함께 로딩이되고 메모리에 계속 있다 function포인터로 주소를 찍을 수 있다 " 라고 말씀하셨는데
함수는 스택에 psuh되고 pop되면서 사라지는 거 아닌가요?
함수는 그때그때 필요할 때마다 스택에 생겼다가 사라질 것 같은데 메모리에 계속 남아있다는 게 무슨 뜻인지 궁금합니다.
메모리에 남아있다면 메모리 어느영역에 남아 있는 건지도 궁금합니다.
컴파일 할때 컴파일러가 함수를 호출할 주소와 그 함수에서 사용될 메모리사이즈를 미리 계산해놓은 다음에 사용할 함수들의 주소를 데이터영역에 미리 저장해놓고(이때 주소값 자체는 스택영역) 함수를 호출할때 데이터영역에 있는 함수호출주소를 보고 함수호출 주소로 찾아가서(스택으로 찾아가서) 함수를 push하고 pop한다.
라고 생각해봤습니다.
답변 1
1
안녕하세요?
이 부분은 충분히 궁금할 수도 있는 부분이라고도 생각됩니다 하지만... 지금은 설명드리기 어려운 부분이 좀 있군요.
컴퓨터구조에 대해서 배우면서 아마 이해하시게 될 것이니 그 때 배우셔도 늦지 않다는 생각이 듭니다. 너무 궁금하시다면 Daivd A Patterson, Computer Organization and Design, 5th ed. 를 통해서면 아마 생각하실 수 있을겁니다.
메모리의 영역.. 대해서는 main함수에 대해서도 생각해보시면 좋을 것 같군요. 앞의 질문도 어쩌면 이 부분에서 해결되는 것일지도 모르겠습니다. 이 부분은 14.21 강의에서 다뤄지네요.
컴파일 할때... 에 대해서도 답변은 첫 답변과 동일합니다.