C GtkTreeModel / Store内存版本

时间:2015-07-24 11:15:16

标签: c gtk

例如: 我创建并填充字符串这样的结构:

  • GtkTreeStore *store = gtk_tree_store_new(1, G_TYPE_STRING);

然后在代码中的某个地方调用

  • g_object_unref(store);

之后,store中存储的字符串是否会被释放?如果没有,如何从GtkTreeStoreGtkTreeModel正确释放内存?

文档对此一无所知。 (或者我找不到信息:P)

1 个答案:

答案 0 :(得分:2)

它不明确,但文档仍然非常明确:请参阅gtk_tree_store_set()

  

如果商店是G_TYPE_OBJECT,商店会引用该值,   如果它是G_TYPE_STRING或G_TYPE_BOXED,它将被复制。

所以GtkTreeStore会做自己的内存管理。实际上,只要您使用它调用gtk_tree_store_set*()(或gtk_tree_store_insert_with_values*()),就可以释放字符串:此时树存储已经创建了字符串的副本。