函数
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
。此数据为函数的调用者拥有。