Blog Das ewige Problem mit den Zeigern

DMA

Komplett-PC-Käufer(in)
Manchmal werde ich im IRC angeschrieben, ob ich mir nicht schnell mal ein Problem ansehen möchte.
Nungut denk ich mir immer, vielleicht lernt derjenige ja aus seinen Fehlern noch was.

Hm.. schauen wir mal, auf den ersten Blick sieht man keinen Fehler, angeblich stürzt es aber immer unregelmäßig ab.
Nun erfrag ich, was den SendRaw() beinhaltet, den Quellcode bekomm ich schnell.
Auch hier kein Fehler, doch der Debugger des mir gegenüber schreit bei bestimmten Ausgängen von Datenströmen.

Nun muß also die Glaskugel her, ich entschied mich erstmal die nahe liegenste Prognose aufzustellen: "Irgendein Zeiger zeigt ins nichts. Hast du alle Zeiger auf NULL geprüft?". Die Antwort lautet, wer glaubt es nicht, "Ja.. die werden doch alle initialisiert".

Nungut, ich weiß nicht weiter und teile es ihm mit - Fernprognosen sind ja immer schwer zu machen -.

Eine halbe Stunde später trifft erneut ein Query von dieser Person ein.
"Ja ich hab das Problem gelöst", nun interessiert mich die Lösung, und als Antwort kam total überraschend: "Ja also .. ähm .. der eine Zeiger war NULL".

Genau in diesem Moment fasste ich mir an die Stirn und dachte, was ist so schwer daran einen Zeiger darauf zu prüfen, ob er ins nichts zeigt.

Und das ist auch zum Teil die Regel, um die 20% der Probleme die mir geschildert werden, sind auf nicht prüfen von Zeigern oder das falsch einsetzen von Zeigern zurück zuführen.

Und was bleibt uns da zum Schluss zu sagen?
Verwendet doch einfach mal dieses Stück code:
Code:
if(a == NULL)
 
Zurück