Jan Trippler skrev:
Node *root;
Du initialisierst root nicht, kannst also nicht sicher sein, dass da auch tatsächlich 0 drin steht. Besser: Node *root = NULL;
Das hoert sich eigentlich logisch an. Aber ich habe mir mit den Data Display Debugger die Baumstrucktur visualisieren lassen. Auch die nicht initialisierten Zeiger enthalten NULL. Kann es sein, dass der gcc die Zeiger auch ohne explicite Angabe initialisiert?
elem = malloc(sizeof(Node)); <--- immer hier
Hier sollte beim Compile eine Warnung kommen, da malloc() vom Typ void* ist. Besser einen typecast nutzen: elem = (Node *) malloc(sizeof(Node));
Ich bekomme mit "-Wall -pedantic" ohne und mit Cast keine Warnung. Logisch wäre es aber.
if( n->val == NULL ) { n->val = malloc(strlen(c)); [...] zusätzlich: Du reservierst hier IMHO zu wenig Platz, denn der nachfolgende strcpy kopiert das abschliessende NULL-Byte mit -
Genau! Das hat der Lauf mit MALLOC_CHECK_=1 auch ergaben. Das ist wirklich meine Blindheit und Dumm- heit.
HTH Jan
Oh ja. Es hat geholfen. Vielen Dank! Terje ______________________________________________________ Få den nye Yahoo! Messenger på http://no.messenger.yahoo.com/ Nye ikoner og bakgrunner, webkamera med superkvalitet og dobbelt så morsom