RVO1 [최적화] RVO, NRVO가 일어나지 않은 경우 RVO(Return Value Optimization), NRVO(Named Return Value Optimization)는 최적화를 위해 컴파일러가 반환 값에 대해 임시 객체를 만드는걸 방지하는 것을 의미합니다. (RVO는 copy-elision이라고 하는 더 큰 최적화 그룹의 일부) 호출자의 스택 프레임에서 반환될 객체에 대한 메모리 할당을 통해 작동합니다. RVO가 동작하지 않는다면, 자체 프레임에서 반환을 위한 공간을 할당한 다음 호출자에게 반환하기 전에 부모 스택프레임으로 복사를 시도합니다. 하지만, RVO가 적용된 경우라면 아래 처럼 부모의 스택 프레임을 사용하게 됩니다. #include class Foo { public: Foo(const std::string& name) { this->n.. 2023. 2. 1. 이전 1 다음