函数

GLibArrayset_clear_func

从:2.32

声明 [src]

void
g_array_set_clear_func (
  GArray* array,
  GDestroyNotify clear_func
)

描述 [src]

设置用于清除 array 中元素的函数。

当数组数据段中的元素被移除以及数组被释放且数据段也被释放时,将调用 clear_func。将传递一个指向要清除的元素的指针,而不是元素本身。

请注意,与 GDestroyNotify 函数的其他用法不同,clear_func 预期会清除它所提供的数组元素的内部内容,而不是释放元素本身。

typedef struct
{
  gchar *str;
  GObject *obj;
} ArrayElement;

static void
array_element_clear (ArrayElement *element)
{
  g_clear_pointer (&element->str, g_free);
  g_clear_object (&element->obj);
}

// main code
GArray *garray = g_array_new (FALSE, FALSE, sizeof (ArrayElement));
g_array_set_clear_func (garray, (GDestroyNotify) array_element_clear);
// assign data to the structure
g_array_free (garray, TRUE);

从:2.32

此函数不可直接提供给语言绑定。

参数

array

类型:一个指向 gpointer 的指针数组

GArray

数据由函数的调用者拥有。
clear_func

类型:GDestroyNotify

一个用于清除 array 中元素的函数。