在本地动态对象上调用析构函数

时间:2014-08-30 22:43:30

标签: function object dynamic scope destructor

美好的一天,

我希望删除指向本地函数中创建的对象的指针。我不太确定如何用这个问题来表达,因为这是我第一次问这个问题。

功能:

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

析构函数:

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

现在的问题是对象new_exit现在已超出范围,但我担心它所分配的动态内存可能会被泄露。

1 个答案:

答案 0 :(得分:0)

变量在方法loadfile中分配,并且仅限于该方法。因为你新建了它,当方法返回时你确实泄漏了内存。如果没有理由在加载文件后存在mazeexit,那么不要新建它,只需声明它。如果真的需要闲逛,请将其声明为成员变量,这样您就可以在析构函数中将其删除