Hi,
wenn ich in C eine Zahl für die Ausgabe formatieren möchte, printf dafür aber nicht ausreicht, wie würde ich die Speicherverwaltung für eine selbstgeschriebene Funktion vernünftigerweise anlegen?
- Ich kann z.B. intern
static char*
benutzen ...- Ich kann andererseits in meiner Funktion malloc verwenden und einen
char**
als Parameter erwarten, ...- Ich kann einfach auf den Parameter aus 2. verzichten und das Speicherleck ignorieren.
4. Du kannst die Formatierungsfunktion um einen Parameter vom Typ char* erweitern, so dass die aufrufende Funktion selbst einen ausreichend großen Speicherplatz zur Verfügung stellen muss. Wenn die maximale Länge des formatierten Strings nicht mit Sicherheit vorhersagbar ist, dann zusätzlich einen Parameter vom Typ int, der der Formatierungsfunktion angibt, wie groß der zur Verfügung stehende Puffer ist.
Das ist ja im Prinzip auch das Verfahren, das sprintf() anwendet - nur dass sprintf() eben *nicht* überprüft, ob der Puffer ausreichend groß ist.
So long,
Martin
Die letzten Worte des Polizisten:
Ich hab mitgezählt, Leute: Sechs Schuss, jetzt hat er keine Munition mehr!
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(