하루동안 삽질한 버그.
메모리가 자꾸 샌다.
어디일까 싶어서 _CrtSetBreakAlloc(); 와 vld를 사용했는데 정확한 위치는 안나옴.
그래서 기존에 추가한거 하나씩 빼면서 했는데도 절반정도 제거함.
마지막 해결은 결국 내가 실수한 컨버팅 때문이었다.
우선 각각의 manager들을 managerList_ 에 넣어두고 종료시에 이 managerList_ 에 있는
manager들을 지워주는데 이렇게 했었다.
for(int index=cnt-1; index>= 0; --index)
{
((MgManagerBase*)managerList_[index])->Destroy();
delete managerList_[index];
}
managerList_는 void* 를 담고있고 모든 manager들은 MgManagerBase를 상속받는다.
그래서 나는 당연히 delete할때 해당 manager들의 소멸자가 호출될줄 알았는데
호출이 되지 않고 있었던 거다.
그래서 결국 아래와 같이 바꾸어 주었다.
MgManagerBase* managerEle = NULL;
for(int index=cnt-1; index>= 0; --index)
{
managerEle = (MgManagerBase*)managerList_[index];
if(managerEle == NULL)
continue;
managerEle->Destroy();
SAFE_DELETE(managerEle);
managerEle = NULL;
}
오래동안 shader 코드랑 스크립트만 짜다보니 이런 삽질도 하는구나..
Reference Link
- vld link : https://vld.codeplex.com/
-
'작업장 > Mgin 제작' 카테고리의 다른 글
shader 구조를 대략 만들고 결과물을 띄웠다. (0) | 2016.06.17 |
---|---|
static function 실수 (0) | 2016.06.11 |
10. shader compile (fxo) (0) | 2016.02.14 |
9. 유니코드 (0) | 2016.02.06 |
8. application (0) | 2016.01.19 |