函数

GLibSListcopy_deep

since: 2.34

声明 [源代码]

GSList*
g_slist_copy_deep (
  GSList* list,
  GCopyFunc func,
  gpointer user_data
)

描述 [源代码]

GSList 进行完整的(深度)复制。

与 g_slist_copy() 相比,此函数除了复制列表容器本身外,还使用 func 来复制每个列表元素。

func,作为一个 GCopyFunc,接受两个参数,即要复制的数据和指向 user_data 的指针。在常见的处理器架构上,如果复制函数只接受一个参数,则可以安全地将 user_data 作为 NULL 传递。但是,如果使用 GCC-Wcast-function-type 警告编译,可能会收到编译器警告。

例如,如果 list 包含 GObjects 的列表,您可以执行以下操作:

another_list = g_slist_copy_deep (list, (GCopyFunc) g_object_ref, NULL);

并且,为了完全释放新的列表,可以执行以下操作:

g_slist_free_full (another_list, g_object_unref);

自 2.34 起可用

此函数不直接对语言绑定可用。

参数

list

类型: 一个 gpointer 的列表

A GSList

此数据为函数的调用者拥有。
func

类型: GCopyFunc

用于复制列表中每个元素的复制函数。

user_data

类型: code>

传递给复制函数 func 的用户数据,或 NULL

此参数可以是 NULL
此数据为函数的调用者拥有。

返回值

类型: 一个 gpointer 的列表

list 的完整副本,使用 g_slist_free_full() 释放它。

数据由调用函数拥有。