
간단 요약 :
- delete() 자체 null 체크 기능 포함
- delete() 호출 시 메모리 할당 전 개체의 소멸자(~class() )를 호출함
관련한 문제 발생과 해결 과정
1. 템플릿을 사용한 싱글톤 클래스를 생성 후 원하는 곳에 상속시켜 쓸 예정이었음

2. 싱글톤 상속 후 메모리 해제 과정(AAA::DestroyInstance() 호출) 중 오류가 남
3. 찾아보니 상속받은 AAA클래스에서 public을 제외한 상속 접근 지정자에서 소멸자(~AAA() )를 정의하면 오류가 남
4. delete 할 때 instance 참조 때문에 접근 지정자에 영향을 받음
5. DestroyInstance() 내부의 delete instance 실행 시 AAA의 ~AAA() / protected 접근 불가
해결법 :
상속받은 클래스에서 소멸자 사용 X
상속받은 클래스에서 public: 에서 소멸자 사용
소멸자 사용 X + 소멸자를 대체할 종료함수 사용
참고
https://learn.microsoft.com/ko-kr/cpp/cpp/delete-operator-cpp?view=msvc-170
'C++ > C++' 카테고리의 다른 글
[C++] wstring (0) | 2022.11.14 |
---|---|
[C++] constexpr (0) | 2022.11.13 |
[C++] 헤더 / 라이브러리에 관해 (1) | 2022.10.11 |
[C++] 프로젝트 생성 관리 (0) | 2022.10.11 |
[C++] string 관련 참고사항 (0) | 2022.10.10 |