<aside> 💡

메모리 중복 해제로 인한 문제

원인

해결방법

  1. 참조형포인터를 매개변수로 전달하여 해제하기
  2. 메모리 할당해제는 해당 포인터를 할당한(소유한) 곳에서 할당해제를 하도록 하기
  3. 스마트 포인터를 활용하여 자동으로 할당한 곳에서 할당해제를 하도록 하기 </aside>

<aside> 💡

추가로 유의할 점

GameObject 클래스에서 Scene클래스가 할당한 이미지를 참조하는 방식이므로, Scene소멸자에서의 할당해제 순서는 GameObject를 먼저 할당해제 후에, 이미지를 할당해제할 것

</aside>

중단점을 찍어가며 디버깅을 하던 중에, Scene 소멸자의 m_pPlayerImgData 의 메모리 주소값과 SpriteManager 소멸자의 m_spriteSheet 의 메모리 주소값이 같다는 점을 통해 발견

image.png

image.png

함수매개변수로 포인터를 전달하고, 매개변수로 전달된 포인터를 할당해제하고 nullptr로 바꾸면 문제가 없을 것이라 판단한 것이 원인

그러나 위와같이 하면 할당해제는 되지만 해당 포인터가 nullptr이 되지는 않는다는 것이 문제