하루동안 삽질한 버그.

반응형

메모리가 자꾸 샌다.

어디일까 싶어서 _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
TAGS.

Comments