我使用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
}
仅作记录,当我以这种方式使用“删除”时,不会发生崩溃,也不会发出任何警告。
答案 0 :(得分:2)
否,GtkListStore
is a subclass of GObject
和GObjects被引用计数。使用g_object_unref(whatWhat);
delete
可能对您有用,但这只是偶然。它将崩溃。