使用`g_object_set_data`传递用户名

Use*_*337 -1 gtk gobject glib

我正在使用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关联.

dou*_*lep 6

使用以下代码:

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销毁时自动释放.