我正在使用g_object_set_dataevent_box设置用户名,所以在回调中我可以在event_box指针中获取它.
g_object_set_data(G_OBJECT(event_box), "user_name", (gpointer)(user_name) );
Run Code Online (Sandbox Code Playgroud)
但问题是我设置的user_name不是指针分配的字符串.
它是一个本地字符串(未在臀部分配)被破坏.
所以有必要分配然后使用指针,我只想将一个名称与此event_box关联.
使用以下代码:
g_object_set_data_full (G_OBJECT (event_box),
"user_name",
g_strdup (user_name),
(GDestroyNotify) g_free);
Run Code Online (Sandbox Code Playgroud)
这样,字符串将在堆上复制,并且副本将在event_box销毁时自动释放.