GLib使用GHashTable?

时间:2011-08-19 12:36:59

标签: c glib

我正在尝试在代码中使用GHashTable。我将使用int作为我的键和结构作为我的价值。我的问题:

  • 我是否必须为我用作密钥的int分配内存,还是可以在函数中使用局部变量进行插入和查找?
  • g_int_to_pointer做什么?
  • 如果我正在写GDestroyFunction,我是否必须释放任何记忆?

2 个答案:

答案 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吗?正如文档所述:

  

指定销毁数据元素时调用的函数类型。它传递指向数据元素的指针,并释放为其分配的任何内存和资源。

是的,你必须释放分配的内存。