函数

steal_pointer

自:2.44

声明 [src]

static inline gpointer
g_steal_pointer (
  gpointer pp
)

描述 [src]

pp 设置为 NULL,并返回之前的 值。

从概念上讲,这会将指针的所有权从引用的变量转移到宏的“调用方”(即:“窃取”该引用)。

返回值将根据 pp 的类型进行正确的类型设置。

在与 g_autoptr() 结合使用以防止自动释放函数的返回值时,这非常有用。考虑以下示例(仅在 GCC 和 clang 上有效):

GObject *
create_object (void)
{
  g_autoptr(GObject) obj = g_object_new (G_TYPE_OBJECT, NULL);

  if (early_error_case)
    return NULL;

  return g_steal_pointer (&obj);
}

它还可以类似的方式用于“输出”参数,特别适用于处理可选输出 参数

gboolean
get_object (GObject **obj_out)
{
  g_autoptr(GObject) obj = g_object_new (G_TYPE_OBJECT, NULL);

  if (early_error_case)
    return FALSE;

  if (obj_out)
    *obj_out = g_steal_pointer (&obj);

  return TRUE;
}

在上述示例中,对象将在早期错误情况下自动释放,且当为 obj_out 给出 NULL 时也自动释放。

自 2.44 起可用

此函数不能直接用于语言绑定。

参数

pp

类型: gpointer

指向 指针的指针。

数据归函数的调用方所有。

返回值

类型: gpointer

没有可用的描述。

数据归被调用函数所有。
返回值可以为 NULL