const 참조에 대한 많은 게시물을 읽었지만 찾고있는 항목을 찾지 못했습니다. 임시 변수를 const 참조에 바인딩하여 수명이 연장되는 메커니즘에 대한 제 가정을 수정 해 주시겠습니까?임시 변수에 대한 const 참조 및 뒤에있는 메커니즘
int Foo(){return 3;}
int main(){
const int& ref = Foo();
return 0;
}
Foo
는 레지스터에 위치하며, 일반적으로 이후 해고되는 임시 이름 값을 반환합니다. const 참조에 바인드하면 컴파일러가이를 닫지 않고 ref
의 범위와 ref
이라는 별칭으로 메모리에 값을 저장합니다.
어떻게 작동하나요?
레지스터와 "메모리"에 관한 모든 이야기는 이러한 현대 시대의 지나친 단순화입니다. 특히 강력한 최적화로 컴파일 된 C++와 같은 언어에 관해서는 특히 그렇습니다. 근원에서 무언가를 보았 기 때문에 그것이 존재할 필요가있는 것이나 기대할 수있는 곳에서 존재할 필요가있는 것을 의미하지는 않습니다. 예를 들어,'int main() {return 0;}'과 같은 코드를 컴파일한다. '3'은 전혀 저장되지 않습니다. –