인프런 커뮤니티 질문&답변
복사 생성자 관련 질문이 있습니다.
해결된 질문
작성
·
420
답변 1
2
꼭 디버그 모드와 릴리즈 모드로 복사 생성자 여부가 결정된다기보다는,
디버거 모드와 릴리즈 모드는 컴파일러의 최적화 수준이 다르고,
이 최적화 수준에 따라 호출여부가 결정된다라고 생각해주시면 좋을듯 합니다,
일반적으로 디버그 모드에서는 최적화 수준이 낮아서
코드 실행 중에 디버깅을 용이하게 하기 위해 많은 추가 코드가 추가됩니다.
이러한 코드 중에는 복사 생성자 호출과 관련된 코드도 포함될 수 있고
그렇기에 디어그 모드로 실행하면 복사 생성자 호출이 되는 경우가 많은 겁니다.
반면에 릴리즈 모드에서는 최적화 수준이 높습니다.
이 과정에서 복사 생성자 호출을 생략하는 경우도 많습니다.
또한, 컴파일러에서는 코드에서 변수의 사용 여부, 변수의 값이 변경되는 경우 등을 분석하여
해당 변수가 필요한지를 판단할 수 있습니다.
이러한 특수한 상황에서는 복사 생성자 호출이 필요 없는 경우도 있을 수 있습니다.
정리하면, Visual Studio에서도 디버그 모드와 릴리즈 모드에 따라 딱 잘라 복사 생성자가 호출 되느냐 안되느냐가 결정된다기보다는
호출할 필요성과 최적화 수준에 따라 복사 생성자 호출이 달라질 수 있습니다.








설명해주셔서 감사합니다 :)