函数
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 起可用
此函数不能直接用于语言绑定。