【问题标题】:Is there really no FULL freeing link deletion function in GLib lists API?GLib列表API中真的没有完全释放链接删除功能吗?
【发布时间】:2021-03-15 17:00:45
【问题描述】:

问题:我想从 GList 中删除一个链接并发布它的数据 - 一步。可用的相关 GLib 函数有:

  • g_list_remove_link - 它只从列表中删除链接,而不触及已删除的链接及其数据,
  • g_list_delete_link – 很接近,但是除了删除和释放链接的元素控制结构(即:GList 结构)之外,它不会触及其中的数据。

仅此而已,还不够……我想要一个函数,例如:

  • g_list_delete_link_full(GList *lst, GList *el, GDestroyNotify full_free_func),

这也将对传递的 GList 节点的数据运行完全清理功能......

为什么没有这个功能?我不希望 GLib API 出现任何明显缺失的功能,而 IMO 就是这种情况。还是我从 API 中遗漏了什么?

【问题讨论】:

    标签: api doubly-linked-list glib


    【解决方案1】:

    没有这样的函数可以做到这一点,因为它只需要两次调用就可以自己完成:

    my_free_func (link->data);
    list = g_list_delete_link (list, link);
    

    【讨论】:

      猜你喜欢
      • 2021-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      相关资源
      最近更新 更多