Ich verwende eine Bibliothek namens tinyXML, die XML-Dateien analysiert. Viele seiner Methoden geben ein const char * zurück.
Nachdem Sie diese Frage gelesen haben: Rückgabe eines char-Arrays aus einer Funktion in C
Ich glaube jetzt, dass jedes Mal, wenn eine Methode ein char * zurückgibt, es die Verantwortung des Aufrufers ist, diese explizit zu befreien, weil sie wahrscheinlich dynamisch auf dem Heap zugewiesen wird. Habe ich Recht / Unrecht? Was kann ich annehmen?
(Wenn ich jemals eine Bibliothek geschrieben hätte, würde ich lieber std :: string anstatt char * -Arrays zurückgeben, weil sie für den Benutzer so viel einfacher sind.)
Sie können nichts annehmen und müssen in der Dokumentation der aufgerufenen Methode nachsehen, ob Sie den Zeiger freigeben müssen oder nicht. Manchmal gibt eine Funktion, die const char *
zurückgibt, möglicherweise eine statisch zugewiesene Zeichenfolge zurück:
Oder es könnte ein Zeiger sein, für den jemand anderes verantwortlich ist. Der Rückgabewert von strcpy
entspricht beispielsweise dem Zeiger, den Sie als Eingabe übergeben haben.