나는 다음과 같은 코드가 있습니다'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
메모리를 확보하려고 노력에서 당신을 방지하기 위해 대신 gchar*
의 const gchar*
을 반환합니다. 함수의 문서는 그렇게 알려줍니다. 물론 반환 된 값을 gchar*
으로 캐스팅하면 해제 할 수 있지만 C 언어가 바보 같은 일을하지 못하기 때문입니다.
예를 들어 메모리 덩어리는 GtkEntry에서 내부적으로 사용하므로 메모리 덩어리를 비우고 나중에 gtk_entry_set_text
을 호출하면 프로그램이 중단됩니다. 이것은 쓰려고하는 메모리가 할당되지 않았기 때문입니다 ...
더 자세한 설명은 분명히 ... thx ... – capede
gchar
은 C 타입 char
의 typedef입니다. 은이 특정 포인터를 할당 해제하면 안됩니다. Per documentation :
반환 값 : 위젯의 내용을 가리키는 포인터. 이 문자열은 위젯에서 내부적으로 할당 된 저장소를 가리키며 해제되거나 수정되거나 저장되어서는 안됩니다.
일반적으로 사이트에 영어가 모국어가 아닌 사람들이 많기 때문에 문법, 맞춤법, 구두점 또는 대문자를 비판하지는 않지만 어쩔 수 없습니다 무슨 뜻인지 이해해. 당신은 할당과 할당 해제에 대해서만 묻고 있습니까? 아니면'const '가 무엇인지에 대한 명확한 설명이 필요합니까? 귀하의 질문에 적절한 영어 문장 구조를 사용하십시오. –
그것의 모든 할당 및 할당 취소에 대한 질문에 대답 해 주시길 바랍니다. @ corynelson 대신 첫 번째 질문에서 무엇을하려고하는지 생각해보십시오 ... – capede