CodeSOD: 하나의 린트 문제
제공된 C++ 코드는 유틸리티 함수에 사용되는 잘못된 싱글톤 구현을 보여줍니다. CUtilities 클래스는 유틸리티 메서드와 전역 포인터인 g_Utility를 가지고 선언됩니다. CUtilities의 생성자는 g_Utility가 현재 인스턴스를 가리키도록 초기화합니다. 그러나 이러한 설정은 여러 인스턴스를 방지하지 못하며, 새로운 인스턴스가 포인터를 덮어쓸 때 메모리 누수를 유발합니다. CUtilityInit이라는 초기화 클래스는 CUtilities의 인스턴스를 생성하는 데 사용되어 해당 생성자를 호출했습니다. 문제는 CUtilityInit 내의 CUtilities 멤버가 린터에 의해 사용되지 않는 것으로 표시되었다는 점입니다. 직원인 Olivia가 이 사용되지 않는 멤버를 제거했습니다. 이 조치는 전역 포인터 g_Utility가 전혀 초기화되지 않았기 때문에 프로그램을 망가뜨렸습니다. 올바른 수정 방법은 잘못된 싱글톤 접근 방식에 의존하는 대신 시작 시 직접 g_Utility를 인스턴스로 초기화하는 것이었습니다. 이 텍스트는 싱글톤이 일반적으로 나쁜 관행이며 잘못 구현된 싱글톤은 심각한 문제를 야기한다고 강조합니다. 개발자는 단순히 디자인 패턴을 사용하기 위해 사용하는 것을 피하는 것이 좋습니다.