http://cafe.naver.com/cegui/139


http://cafe.naver.com/cegui/2 이글에서 혜윰님이 말씀하신 CEGUI::System::Destroy 라는 함수가 없더라구요...

그대신 CEGUI::System::GetInstance().detstroysingleton인가하는 메소드가 있긴한데

보호영역이라서 사용이않되고 영역을 변경해서 컴파일해봤지만 무수한 메모리릭은 그대로 나더라구요

그래서 cegui포럼을 검색해서 답을 찾았습니당...

 delete CEGUI::System::getSingletonPtr();

로  System의 싱글톤 클래스를 받아와서 해야되는거엿더구요 -ㅇ-;;;;킁

이걸해도 나는 메모리릭!!!!!!!!!!!!!!!!!!!!!!!!!!

누수추적해봣더니 Renderer에서 나오는 릭이엇습니다

고로  delete m_myRenderer; 를 해줬습니다     m_myRenderer는 CEGUI::DirectX9Renderer* 이고요 ㅎ

이랫더니 메모리 누수 빠이 빠이 ><

순서를 바꿔서 렌더러 부터 해제를 시켜봤더니 메모리 오류가 뜨더라구요.

System를 먼져 해제하면서 렌더러속에있는 텍스쳐를 먼져 삭제해주고 렌더링 객체를 삭제해야하는데

렌더링 객체부터 삭제하면 System이 렌더링객체속 텍스쳐를 삭제 못해줘서 뜨는듯 하더라구요

그러므로 System을 먼져 릴리즈후 렌더러를 릴리즈시켜주면 될꺼같네요

 

고로 정리하자면

 delete CEGUI::System::getSingletonPtr();      //CEGUI::System의 싱글톤 포인터를 받아와서 해제시킨다
 delete m_myRenderer;                                //CEGUI::DirectX9Renderer를 해제시킨다.

                                                               // delete는 System-> Renderer순으로

 

ps. 카테고리 선택하는데 cegui분석에 올릴려햇는데 않올려지네요 -ㅇ-;; 응용이라 할정도는 아니라서요;;

운영진님이 혹시 보신다면 글이동좀 부탁드릴꼐요 ㅠㅠ

반응형

+ Recent posts