C언어 실행 과정 질문입니다

mayongho의 이미지

함수를 사용했을 때 메모리상에서 어떻게 처리되는지 그 과정을 알고 싶습니다.

더 자세히 말하면

실행중에 함수를 만나게 되면 그 함수의 정의부분의 시작점으로 이동후 실행한뒤 호출했던 주소로 다시 돌아오는 것으로 알고있는데

함수사용될때의 인자 값이나 호출된 주소값이 다 다를텐데 ,, 그럼 실행중에 함수를 만날때 마다

공통부분은(함수의 정의부분) 제외하고 그외의 정보들은 메모리에 새롭게 추가되는 건가요?

....아 뭔가 설명이 잘 안되네요 ㅜㅜ 그냥 함수 실행과정이 궁금합니다..ㅜㅜ

peecky의 이미지

'함수 콜스택' 검색해보세요. (따옴표 빼고)

ifree의 이미지

함수를 호출하면서 호출 지점의 주소(return address)와 인수들을 스택에 올려놓습니다.
호출된 함수는 스택의 인수를 사용하여 업무를 수행하여, 그 결과값을 다시 스택에 올리고 주어진 return address 를 사용하여 호출된 곳으로 돌아갑니다.
호출된 함수 내에서 사용하는 변수 또한 스택을 사용하기 때문에 여러 쓰레드에서 다른 인수를 사용하여 동일한 함수를 호출해서 사용해도 충돌이 일어나지 않습니다.

mayongho의 이미지

이해가됬습니당. ^^