开发者

Using `g_object_set_data` for passing user name

I am using g_object_set_data to set user name with event_box so in call back i can get it with in event_box pointer.

开发者_JS百科g_object_set_data(G_OBJECT(event_box), "user_name", (gpointer)(user_name) );

but problem is that i am setting user_name which is not an pointer allocated string.

It is an local string (not allocated on hip) which gets destroyed.

So is it necessary to allocated and then use the pointer, i just want to associate one name with this event_box.


Use the following code:

g_object_set_data_full (G_OBJECT (event_box),
                        "user_name",
                        g_strdup (user_name),
                        (GDestroyNotify) g_free);

This way the string will duplicated on the heap and the copy will get freed automatically when event_box is destroyed.


Yes, since the data stored in the GObject is just a plain pointer, it can't do the memory management for you.

Just call g_strdup() on the string, and store the result.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜