Behandelt ein Char-Array, das von einer Funktion in C zurückgegeben wurde

8

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.)

    
SPQR3 05.06.2015, 15:35
quelle

2 Antworten

7

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:

%Vor%

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.

    
hugomg 05.06.2015 15:39
quelle
5

Lesen Sie die Dokumentation der Bibliothek. Beide Verwendungen (Zeiger auf einen internen Puffer oder Zeiger auf einen dynamisch zugewiesenen Puffer) sind üblich und nicht von dem Funktionsprototyp allein zu unterscheiden.

    
Quentin 05.06.2015 15:39
quelle

Tags und Links