c++ - 无效删除指向类的指针

标签 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;
 }

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

最佳答案

您没有删除 Facebook 对象。

试试这个:

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

关于c++ - 无效删除指向类的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37069070/

相关文章:

c++ - 删除命令的构建信息

c++ - FPU 控制函数是否与 x64_64 处理器相关?

c++ - 从渐变中获取中间色

c++ - 为什么我会收到 "invalid conversion from ' Queue*/Stack *' to ' int'"错误消息?

android - 为 Qt for Android 目标构建 SMTP 客户端

c++ - 由下划线开头的标识符导致的错误的真实示例

c++ - 如何从 STL 的 const_iterator 中获取数据?

c++ - Matlab 语法帮助。'*

C++ 使用逻辑而不是手写数据来初始化 STL 容器

c++ - 在 C++ 中为变量分配作用域