CPlayingScene::CPlayingScene()
{
}
CPlayingScene::~CPlayingScene()
{
if (m_pLayerCharacter != nullptr){
delete m_pLayerCharacter;
m_pLayerCharacter = nullptr;
}
if (m_pDman != nullptr){
delete m_pDman;
m_pDman = nullptr;
}
if (m_pTestSprite != nullptr){
delete m_pTestSprite;
m_pTestSprite = nullptr;
}
}
CPlayingScene* CPlayingScene::getInstance()
{
static CPlayingScene instance;
return &instance;
void CPlayingScene::onEnter()
{
setName("PlayingScene");
OutputDebugString("onEnter\n");
m_pLayerCharacter = new CLayer();
m_pLayerCharacter->setName("pLayerCharacter");
addChild(m_pLayerCharacter);
m_pDman = new DMan();
m_pLayerCharacter->addChild(m_pDman);
m_pDman->setName("DMan");
m_pTestSprite = new CSprite();
m_pLayerCharacter->addChild(m_pTestSprite);
m_pTestSprite->setName("TestSprite");
}
void CPlayingScene::onExit()
{
}
보면 엔터에서 생성하고 소멸자에서 소해제를 해
다 안올라간거 같은데
근데 싱글톤도 릭이나고 맴버들도 릭이나
뭘 다올려?? 소스를?
여기에 어캐올림..;;
존나 큰ㄷ
자자...
일단 생성 부분을 모두 리마킹하면 릭이 안일어나는걸 확인해.
http://www.tutorialspoint.com/codingground.htm
여기 통해서 소스 올리면 됨.
그런 다음, 멤버변수로 isEnding 같은걸 하나 추가해 그리고 소멸자가 불릴때만 그걸 true로
아니다. 여기가 더 좋겠다.
https://ideone.com/
그런 뒤 생성 부분들에 isEnding 이면 안하도록 해버려.
그런 뒤 확인해 봐.
리마킹하면 릭안남
근데 isEnding을 이용하는건 저게 여러번 호출된다는 가정하잖아..
지금 저건 한번밖에 호출안해
아니면 내가 싱글톤을 이상하게 만든건가
이거 뭔가 장면관리자가 ogre 엔진 비슷하기도 하고 ㅋㄷ 공개 3d 지형 엔진 코드에서 봤던것 같기도 하고
내가 말한대로 해봐. 니가 가정하지 못한 이벤트가 일어날 수도 있어.
내가 엔진쪽을 보고 있으니 어딜 갖다대도 비슷할겨
존나 신기한건 내가 로그를 다찍어봣는데 ~CPlayingScenepLayerCharacter~CLayer ~DMan ~CSprite
~CPlayingScene pLayerCharacter~CLayer~DMan ~CSprite
이렇게 시발.!! 왜 ㅐ엔터가 안먹혀
isEnding 도입해 보라니깐 ㅋㅋ
~CPlayingScenepLayerCharacter~CLayer ~DMan ~CSprite
가능하면 isEnding 은 static 이 좋겠다.
아닠ㅋㅋ 엔터가 안먹혀
전역이나.
왜
그럼
로그를 찍었더니
~CPlayingScene
pLayerCharacter~CLayer
~DMan
~CSprite
이렇게 뜬다는 거지
순서대로
그냥 말로 설명해
설명했자나 위에
이어서 길게 쓰라고?
걍 코세 시키는데로 하고 watch 걸어보면 될꺼 같은뎅.
그니까 니 말은 그냥 소멸자가 순서대로 잘 불린다는거잖아.
그 뒤 다른 일이 벌어지느냐가 문제지.
로거도 종료된 후에 다른놈이 동작할 수도 있고
니가 어떻게 짰는지 내가 알게 뭐야.
아니..한번밖에 호출안한다니까?
해보라고
뭐 어렵냐?
그래. 기다려봐
대신 isEnding 은 초기화 하지 말아봐.
전역에서 한번만 초기화 되게
생성자가 두번 불리는 케이스를 막기 위해서야.
똑같다.
내가 짠거지만 참 ㅄ같네
왜 릭이 나는거지
순서
addChild 부분만 리마킹 해봐
그래도 같음
그럼, new 를 한 종류씩만 열어봐.
나머진 다 닫고
저 안에서 new한건 다 릭남
그럼 char 배열 하나 생성하고 해제 하는거 넣어봐 다른 클래스들은 다 닫고
내가 지금 걍 콘솔로 테스트 해봤는데
싱글톤 자체 문제 인듯
똑같은 릭이남
ST7 7 8.℃ ○M thu1a351
파일 라인 추적하지 이게 뭔짓이래