Am Son, 2002-12-15 um 19.23 schrieb Jan Trippler:
On Son, 15 Dez 2002 at 15:20 (+0100), Sebastian Huber wrote:
On Sunday 15 December 2002 13:03, Jan Trippler wrote: [...]
if(cmp > 0) { if(n->left == NULL)
Diese Abfrage ist gefährlich, da Du n ja per malloc() erzeugt hast und malloc() den reservierten Speicher nicht initialisiert. Es ist nach einem malloc() also nicht sicher, dass die Pointer NULL sind. Abhilfe: Entweder nach dem malloc initialisieren (siehe oben) oder calloc() benutzen. [...]
Wenn man mit calloc oder memset initalisiert und NULL haben will, dann ist diese Methode nicht portabel, oder?
Siehe oben - ich habe noch kein Unix erlebt, bei dem das schiefgeht, Ich würde David's damalige Aussage bez. der Definition von NULL nicht unterschreiben, kann sie aber mangels Zugriff auf die 'C/C++'-Standards weder widerlegen noch bestätigen.
Ansonsten kenne kein System auf dem NULL nicht 0 ist, kenne aber diverse Software, die auf dieser Annahme basiert (Unter anderem basieren die GCC-libstdc++ und das gesamte X11-System darauf.)
lasse mich aber gern eines Besseren belehren (wenn ich erklärt kriege, warum das so sein soll ;-).
Wie gesagt, ich kenne kein System auf dem das nicht funktioniert. Ralf