我有以下代码:
int main()
{
const gchar *wew = gtk_entry_get_text(GTK_ENTRY(gtkentrywidget));
return 0;
}
gtk_entry_get_text()
返回const gchar*
,wew
是否需要解除分配,为什么?
答案 0 :(得分:4)
gchar
只是C类型char
的typedef。您不得取消分配此特定指针。根据{{3}}:
返回:指向窗口小部件内容的指针作为字符串。此字符串指向窗口小部件中的内部分配存储,不得释放,修改或存储。
答案 1 :(得分:3)
gtk_entry_get_text
会返回const gchar*
而不是gchar*
,以防止您尝试释放内存。该功能的文档甚至告诉你。当然,如果你将返回的值转换为gchar*
,你就可以释放它,但那只是因为C语言并不能阻止你做愚蠢的事情。
例如,由于内存块是由GtkEntry在内部使用的,如果释放该内存块,然后调用gtk_entry_set_text
,程序将崩溃。这是因为它尝试写入的内存是未分配的......