'const gchar *'是什么意思,使用后需要释放内存吗?

时间:2011-05-11 18:18:13

标签: c string pointers gtk const

我有以下代码:

int main()
{

const gchar *wew = gtk_entry_get_text(GTK_ENTRY(gtkentrywidget));

return 0;
}

gtk_entry_get_text()返回const gchar*wew是否需要解除分配,为什么?

2 个答案:

答案 0 :(得分:4)

gchar只是C类型char的typedef。您不得取消分配此特定指针。根据{{​​3}}:

  

返回:指向窗口小部件内容的指针作为字符串。此字符串指向窗口小部件中的内部分配存储,不得释放,修改或存储。

答案 1 :(得分:3)

gtk_entry_get_text会返回const gchar*而不是gchar*,以防止您尝试释放内存。该功能的文档甚至告诉你。当然,如果你将返回的值转换为gchar*,你就可以释放它,但那只是因为C语言并不能阻止你做愚蠢的事情。

例如,由于内存块是由GtkEntry在内部使用的,如果释放该内存块,然后调用gtk_entry_set_text,程序将崩溃。这是因为它尝试写入的内存是未分配的......