函数
GLibListcopy_deep
自:2.34
声明 [src]
GList*
g_list_copy_deep (
GList* list,
GCopyFunc func,
gpointer user_data
)
描述 [src]
创建一个与 GList
完全相同(深度复制)的副本。
与 g_list_copy()
不同,此函数不仅复制列表容器本身,而且还使用 func
来复制每个列表元素。
func
,作为一个 GCopyFunc
,接受两个参数:要复制的数据以及一个指向 user_data
的指针。在常见的处理器架构上,如果复制函数只接收一个参数,则可以将 user_data
设置为 NULL
,这是安全的。但是,如果您使用带有 -Wcast-function-type
警告的 GCC 编译,则可能会收到编译器警告。
例如,如果 list
包含一组 GObjects,您可以这样做:
another_list = g_list_copy_deep (list, (GCopyFunc) g_object_ref, NULL);
为了完全释放新列表,您还可以这样做:
g_list_free_full (another_list, g_object_unref);
自:2.34
此函数不直接提供给语言绑定使用。
参数
list
-
类型:指向
gpointer
的指针列表GList
,该指针必须指向列表的顶部。数据由函数的调用者拥有。 func
-
类型:
GCopyFunc
一个复制函数,用于复制列表中的每个元素。
user_data
-
类型:
gpointer
传递给复制函数
func
的用户数据,或NULL
。参数可以是 NULL
。数据由函数的调用者拥有。