2014-08-30 2 views
0

좋은 날,로컬 동적 객체에서 소멸자를 호출하는 중

로컬 함수에서 생성 된 객체에 대한 포인터를 삭제하려고합니다. 나는이 질문이 처음으로 묻는 것처럼 질문을 구사하는 방법을 확실히 모르겠습니다.

기능 :

Level::loadFile() { 
//some code 
MazeExit *new_exit; 
     new_exit = new MazeExit; 
//some more code 
} 

소멸자 :

Level::~Level() 
{ 
    delete new_exit; 
    new_exit = NULL; 
} 

이제 문제는 객체 new_exit이 범위를 벗어난 지금이다하지만 난 그게 유출 될 수 할당 된 동적 메모리를 우려하고있다.

답변

0

변수는 메소드 loadfile에 할당되었으며 해당 메소드에만 적용됩니다. 당신이 그것을 새롭게했기 때문에, 메소드가 돌아 왔을 때 메모리가 누출되었습니다. 로드 파일 이후에 mazeexit이 존재하지 않을 경우 새로운 파일을 작성하지 말고 그냥 선언하십시오. 진정으로 주위를 놀고 해야하는 경우, 소멸자에서 삭제할 수 있도록 멤버 변수로 선언하십시오.

+0

그래서 생성자에서 초기화해야합니까? –

관련 문제