我似乎遇到了析构函数和/或释放已分配内存的问题。 这是我的简单代码:
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;
}
并且在此类的构造函数中没有分配内存...
答案 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;
}