안녕하세요.
c언어 함수 리턴값에 대해서 궁금한게 있어서 이렇게 글을 작성하였습니다.
아래 함수는 간단한 합계를 계산하는 함수 입니다.
int sum(int a, int b)
{
int sum = 0;
sum = a + b;
return sum;
}
int main()
{
printf("sum : %d", sum(10,10);
}
sum 변수는 스택에서 할당된 메모리 이므로
함수를 빠져나갈 때 스택 영역이 파괴되어 sum 변수는 더 이상 사용할 수 없습니다.
따라서 리턴 후 sum의 값인 20이 저장된 메모리를 쓸 수 없지만
여기에서 제가 알기로는
return value에 한해서 sum 주소를 일시적으로 보호(?)한다로 알고 있는데요..
아니면 임시 메모리에 보관 후 리턴 처리 후 파괴인지...
정확한 개념이 정립되지 않아 혹시 어떤 방식으로 처리 되는지 궁금합니다.