Speicherzugriffsfehler trotz Prüfung gg. NULL
-
Hallo,
ich benutze eine Funktion, die eine Art Wrapper zur Standardfunktion strcmp bietet. Diese bekommt zwei char* als Parameter (a, b) und gibt bool zurück.
Beide Parameter werden auf a == NULL und b == NULL geprüft und nur, wenn beide *nicht* NULL sind, wird strcmp gerufen. Trotzdem bekomme ich in bestimmten Fällen (die Strings werden anderweitig generiert) einen Speicherzugriffsfehler. Auch ein Ausgeben der Strings (mit cout) liefert dann einen Fehler.
Hat jemand eine Idee, was ich übersehen haben könnte bzw. wie ich den Fehler vermeiden kann?
Danke, Michael
-
mren81 schrieb:
Hat jemand eine Idee, was ich übersehen haben könnte bzw. wie ich den Fehler vermeiden kann?
pointer können verschiedene ungültige inhalte haben, nicht nur NULL, dann crashed es. welches os nutzt du?
-
net schrieb:
pointer können verschiedene ungültige inhalte haben, nicht nur NULL, dann crashed es. welches os nutzt du?
Linux.
Hmm, stimmt, der Pointer kann ja auch einfach sonst irgendwo ins Nirvana zeigen
Die Frage ist, kann man den Zugriff prüfen, ohne dass das OS mir gleich auf die Finger haut?
-
mren81 schrieb:
net schrieb:
pointer können verschiedene ungültige inhalte haben, nicht nur NULL, dann crashed es. welches os nutzt du?
Linux.
schade, da kann ich dir leider nicht weiterhelfen
aber vielleicht geht's damit: http://www.linkdata.se/sourcecode.html
-
net schrieb:
mren81 schrieb:
net schrieb:
pointer können verschiedene ungültige inhalte haben, nicht nur NULL, dann crashed es. welches os nutzt du?
Linux.
schade, da kann ich dir leider nicht weiterhelfen
aber vielleicht geht's damit: http://www.linkdata.se/sourcecode.htmlHabe den Fehler gefunden: Die Strings (also die char*) sind in einem Array. Der aufrufende Algo läuft über diese Grenzen hinaus. Das musste ich einfach nur abfangen und entsprechend handeln.
Danke für den Tipp, ich hätte mich noch dumm und dämlich gesucht
Gruß, Michael
-
Vielleicht postest du mal den Code und wie du die Funktion aufrufst. Oder hast du keine 0-terminierende Strings übergegeben?