我有以下代码:'const gchar *'的含义是什么,使用后需要释放内存吗?
int main()
{
const gchar *wew = gtk_entry_get_text(GTK_ENTRY(gtkentrywidget));
return 0;
}
gtk_entry_get_text()
返回const gchar*
,所以没有wew
需要被释放或没有,为什么?
我有以下代码:'const gchar *'的含义是什么,使用后需要释放内存吗?
int main()
{
const gchar *wew = gtk_entry_get_text(GTK_ENTRY(gtkentrywidget));
return 0;
}
gtk_entry_get_text()
返回const gchar*
,所以没有wew
需要被释放或没有,为什么?
gtk_entry_get_text
返回const gchar*
代替gchar*
阻止你试图释放内存。该功能的文档甚至告诉你。当然,如果你将返回的值赋给gchar*
,你可以释放它,但这只是因为C语言不会阻止你做愚蠢的事情。
例如,由于GtkEntry在内部使用内存块,如果释放内存块并稍后调用gtk_entry_set_text
,程序将崩溃。这是因为它试图写入的内存未分配...
更清楚的解释,虽然... thx ... – capede 2011-05-13 06:54:14
A gchar
只是C型char
的typedef。您一定不能释放此特定指针。根据documentation:
返回:作为字符串指向小部件内容的指针。该字符串指向小部件内部分配的存储空间,不得释放,修改或存储。
我通常不批评语法,拼写,标点符号或大写字母,特别是因为网站上有许多非母语英语的用户,但我无法明白你的意思。你问的只是分配和释放,还是你需要澄清'const'是什么?请在你的问题中使用适当的英语句子结构。 – 2011-05-11 18:22:40
它的所有关于分配和释放,如果你介意请回答我已经问过@corynelson而不是thinkin想要在第一个问题上完成什么的问题... – capede 2011-05-11 18:34:31