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

时间:2018-08-21 15:58:52

标签: gtk

我使用GTK创建带有按钮,列表等的GUI。 在某些类中,我具有GtkListStore *类型的私有成员,并且使用'gtk_list_store_newv'初始化那些指针。 函数“ gtk_list_store_newv”创建新的GtkListStore并返回GtkListStore *。 GTK文档说“返回新的GtkListStore”。 是否使用“ new”运算符为新创建的对象创建了内存?如果是这样,那么我应该明确地发布``删除'',例如在自定义对象析构函数中?

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
}

仅作记录,当我以这种方式使用“删除”时,不会发生崩溃,也不会发出任何警告。

1 个答案:

答案 0 :(得分:2)

否,GtkListStore is a subclass of GObject和GObjects被引用计数。使用g_object_unref(whatWhat);

delete可能对您有用,但这只是偶然。它将崩溃。