使用 GLib 中的 GHashTable?
我正在尝试使用 GHashTable
在我的代码中。我将使用 int
作为我的键,使用结构体作为我的值。我的问题:
- 我是否必须为用作键的
int
分配内存,或者我可以在插入和查找函数中使用局部变量吗? g_int_to_pointer
是做什么的?- 如果我正在编写
GDestroyFunction
,我是否必须释放任何内存?
I am trying to use a GHashTable
in my code. I will be using an int
as my key and a structure as my value. My questions:
- Will I have to allocate memory for the
int
I am using as a key, or can I just use a local variable in the functions for insert and lookup? - What does
g_int_to_pointer
do? - If I am writing a
GDestroyFunction
, will I have to free any memory?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
GINT_TO_POINTER
(注意大写字母)将 32 位int
打包到指针的空间中,该指针可以是 32 位或 64 位。例如,您可以使用此宏将int
作为信号的user_data
参数传递,同时避免为它们分配内存。然后在信号处理程序中,使用 GPOINTER_TO_INT 取回 int。不要尝试取消引用指针!GINT_TO_POINTER
(mind the capital letters) packs a 32-bitint
into the space of a pointer, which may be 32 or 64-bit. You can use this macro to passint
s as theuser_data
parameter of a signal, while avoiding allocating memory for them, for example. Then in the signal handler, useGPOINTER_TO_INT
to get your int back. Don't try to dereference the pointer!不,您可以按值传递整数,不需要使用
malloc()
等在堆上分配它。抱歉,我不认识那个人。
您是指 GDestroyNotify 吗?正如文档所述:
是的,您确实必须释放分配的内存。
No you can pass the integer by value, you do not need to allocate it on the heap with
malloc()
or the like.Sorry, I don't know that one.
Did you mean GDestroyNotify? As the documentation states:
Yes, you do have to free the allocated memory.