无效删除指向类的指针

时间:2016-05-06 09:39:10

标签: c++

我似乎遇到了析构函数和/或释放已分配内存的问题。 这是我的简单代码:

void* Init(){
    try {
       Facebook* DS = new Facebook();
       return (void*)DS;
    } catch(std::bad_alloc&) {
       return NULL;
    }
} 

以及释放此函数分配的内存的函数:

void Quit(void** DS){
   delete (Facebook*)DS;
   *DS = NULL;
   return;
}

如果我只是简单地调用这两个函数,我会在删除行中获得无效删除,并且新分配的内存丢失了。

这是facebook类:

class Facebook {
   private:
   List<Troll*> trollsList;
   AVLTree<PostByLikes> likesTree;
   AVLTree<PostById> idTree;
   int maxPost;
 }

并且在此类的构造函数中没有分配内存...

2 个答案:

答案 0 :(得分:2)

您没有删除Facebook对象。

试试这个:

void Quit(void** DS)
{
   delete (*DS);
   *DS = NULL;
}

答案 1 :(得分:1)

试试这个

void Quit(void** DS){
   Facebook* pDS = (Facebook*)(*DS);
   delete pDS;
   *DS = NULL;
   return;
}