Krautkanal.com

Veröffentlicht am 2016-09-01 15:04:19 in /prog/

/prog/ 9139: C Funktion, die String entgegen nimmt

woodydotmx Avatar
woodydotmx:#9139

Bernd baut eine C API, bei der eine Funktion einen String entgegen nimmt und damit eine Datenstruktur baut.

Nun kann es ja sein, dass diese Funktion einen Literal-Zeiger übergeben bekombt der nicht gelöscht werden darf oder eben einen Heap-String, der dann natürlich wieder gelöscht werden müsste...

Da diese Funktion auch zum intern beim Parsen eingesetzt wird und die Daten erhalten bleiben müssten, wäre es kewl, wenn diese Strings mittels einer Datenstrukturlöschfunktion mitbefreit werden würden.

Dem steht die Literal/Heap-Sache im Weg.

Was tun?

a) Buchführung in den Strukturen, ob es ein zu löschender String ist
b) Grundsätzlich alle übergebenen Strings kopieren und die Kopie später löschen, weil die Verantwortung der übergebenen Zeiger grundsätzlich dem Aufrufer unterliegt
c) ???

alagoon Avatar
alagoon:#9146

b

alta1r Avatar
alta1r:#9150

>>9146
Da tendiert Bernd mittlerweile auch zu, um ehrlich zu sein...

splashing75 Avatar
splashing75:#9152

Auf jeden Fall b.

BrianPurkiss Avatar
BrianPurkiss:#9154

>>9146
>>9152
Bernd hat es jetzt mit b gelöst. Danke hierfür, Bernds.

/Faden

vladarbatov Avatar
vladarbatov:#9161

Ich würde den String als const char * übergeben. Die Verantwortung der Speicherfreigabe sollte beim Aufrufer liegen – der hat den String ja auch irgendwo hergeholt.

abotap Avatar
abotap:#9164

>>9161
Da hat Bernd gut aufgepasst. Danke!

Neuste Fäden in diesem Brett: