代码之家  ›  专栏  ›  技术社区  ›  Pekov

是否为用“gtk_list_store_newv”创建的对象分配了“new”内存

gtk
  •  0
  • Pekov  · 技术社区  · 6 年前

    我使用GTK创建带有按钮、列表等的GUI。 在某些类中,我有类型为gtk list store*的私有成员,我使用“gtk_list_store_newv”来初始化这些指针。 函数“gtk_list_store_newv”创建新的GtkListStore并返回GtkListStore*。GTK文档说“返回一个新的GtkListStore”。 是否使用“new”运算符为新创建的对象创建内存?如果是这样,那么我应该显式地用'delete'释放,例如在自定义对象析构函数中?

    class What {
      public:
        What();
        ~What();
      private:
        GtkListStore* whatWhat;
    };
    
    // this constructor uses 'gtk_list_store_newv' to initialize the member
    What::What() {
      // some variables to define input arguments for the function
      whatWhat = gtk_list_store_newv(// the arguments here...);
    }
    
    // SHOULD THIS EXPLICIT DESTRUCTOR USE 'delete'
    What::~What() {
      delete whatWhat;  // do I need this 'delete' to release memory
    }
    

    仅作记录,当我使用“delete”时,这样既不会发生崩溃,也不会出现任何警告。

    1 回复  |  直到 6 年前
        1
  •  2
  •   ptomato    6 年前

    不, GtkListStore is a subclass of GObject ,GObjects是引用计数。使用 g_object_unref(whatWhat);

    delete