我从gtk_text_buffer_get_text返回时是否调用g_free

我从gtk_text_buffer_get_text返回时是否调用g_free,gtk,Gtk,gtk文档在大多数方面都明确说明了在响应gtk函数/子调用时返回的对象上是否必须调用g_free或g_object_unref 然而,在一些地方,它没有被明确指定,或者指定了一些神秘的消息,这使得读者能够充分了解它 对于gtk_text_buffer_get_text,它指定返回的是“分配的UTF-8字符串” 这是否意味着它是gtk分配字符串所需的内部字符串。还是只为我的返回字符串分配了一个必须调用g_free的函数 一般来说,如果没有指定如何处理返回的字符串/对象,我的正确假设是什么?返回字符

gtk文档在大多数方面都明确说明了在响应gtk函数/子调用时返回的对象上是否必须调用g_free或g_object_unref

然而,在一些地方,它没有被明确指定,或者指定了一些神秘的消息,这使得读者能够充分了解它

对于gtk_text_buffer_get_text,它指定返回的是“分配的UTF-8字符串”

这是否意味着它是gtk分配字符串所需的内部字符串。还是只为我的返回字符串分配了一个必须调用g_free的函数


一般来说,如果没有指定如何处理返回的字符串/对象,我的正确假设是什么?

返回字符串的经验法则是:

  • const char*
    值归GTK所有,不应释放
  • char*
    分配值,所有权转移给您

在不明确的情况下,尤其是对于随机指针,API用
transfer none
标记进行注释,这意味着所有权不会随指针一起转移,并且被调用方仍然拥有数据;或者一个
transfer full
标记,这意味着指针的所有者是调用者。

返回字符串的经验法则是:

  • const char*
    值归GTK所有,不应释放
  • char*
    分配值,所有权转移给您

在不明确的情况下,尤其是对于随机指针,API用
transfer none
标记进行注释,这意味着所有权不会随指针一起转移,并且被调用方仍然拥有数据;或者一个
transfer full
标记,这意味着指针的所有者就是调用者。

谢谢。这正是我想要的。我可能找不到正确的地方,但我在GTK文档中的任何地方都找不到这些信息。这正是我想要的。我可能找不到正确的地方,但在GTK文档中找不到这些信息