我正在尝试在代码中使用GHashTable
。我将使用int
作为我的键和结构作为我的价值。我的问题:
int
分配内存,还是可以在函数中使用局部变量进行插入和查找?g_int_to_pointer
做什么?GDestroyFunction
,我是否必须释放任何记忆?答案 0 :(得分:3)
GINT_TO_POINTER
(注意大写字母)将32位int
打包到指针的空间中,该指针可以是32位或64位。例如,您可以使用此宏将int
s作为信号的user_data
参数传递,同时避免为它们分配内存。然后在信号处理程序中,使用GPOINTER_TO_INT
来恢复你的int。不要试图取消引用指针!
答案 1 :(得分:2)
我是否必须为我用作键的int分配内存,还是可以在函数中使用局部变量进行插入和查找?
不能按值传递整数,不需要在malloc()
之类的堆上分配它。
g_int_to_pointer做什么?
抱歉,我不知道那个。
如果我正在编写GDestroyFunction,我是否必须释放任何内存?
您的意思是GDestroyNotify吗?正如文档所述:
指定销毁数据元素时调用的函数类型。它传递指向数据元素的指针,并释放为其分配的任何内存和资源。
是的,你必须释放分配的内存。