반환값의 생성시점이 궁금합니다.

익명 사용자의 이미지

C++에서 함수가 호출될때

스택 영역에 매개변수와 지역변수를 위한

메모리 공간이 생성되는걸로 알고 있는데요

반환타입이 값형식일 경우 사본이 만들어지기 때문에

역시 메모리공간이 생성될텐데

이 사본은 함수 호출될때 생성되는건가요?

아니면 함수가 종료될때 혹은 종료되고 나서 생성되는건가요?

고수님들 답변 좀 부탁드립니다~!

DarkSide의 이미지

스택 영역에 메모리 공간이 이미 생성되어 있습니다.
반환값이 함수가 실행되기도 전에 생성될 수가 없죠.
반환값 역시 리턴 시에 스택에 쌓는 것이 일반적입니다.
레지스터로 반환할 수도 있습니다.

답변의 이미지

감사합니다.