AndiE Geschrieben 22. November 2008 Geschrieben 22. November 2008 Danke Klotzkopp, Fehler erkannt. Ich mußte erstmal in der Hilfe nach "Literalen" suchen, mir war der Begriff nicht geläufig. Ich hatte ihn mit Ressource gleichgesetzt. Zitieren
e.full Geschrieben 22. November 2008 Autor Geschrieben 22. November 2008 Folgende Operationen sind verboten, weil sie undefiniertes Verhalten erzeugen: Jegliche Zugriffe über uninitialisierte ZeigerJegliche Zugriffe über NullzeigerSchreibzugriffe auf StringliteraleJegliche Zugriffe über den alloziierten Speicherbereich hinaus (Buffer Overflow) und da str4= 0 ist, ist das dann verboten Zitieren
kleinermann Geschrieben 26. November 2008 Geschrieben 26. November 2008 Ich habe das mal praktisch durchgeführt. Zeilen 06 und 07 funktionieren. Ich frage mich hier allerdings warum Zeile 06 funktioniert. Zeile 08 und 09 funktionieren nicht. Bei Zeile 08 ist das klar. Bei Zeile 09 bin ich mir nicht sicher. Liegt es daran, dass str4 einfach völlig undefiniert ist bzw.str4 kein Speicher zur Verfügung gestellt wird? lg Zitieren
Klotzkopp Geschrieben 26. November 2008 Geschrieben 26. November 2008 Ich habe das mal praktisch durchgeführt. Zeilen 06 und 07 funktionieren. Ich frage mich hier allerdings warum Zeile 06 funktioniert. Diese Herangehensweise funktioniert bei C und C++ nicht. Laut Standard erzeugt der Code in Zeile 6 undefiniertes Verhalten. Das heißt nicht, dass das Programm an dieser Stelle abstürzen muss (das wäre ein definiertes Verhalten), sondern dass irgendetwas passieren kann. Man darf bei C und C++ daraus, dass ein Code funktioniert, nicht schlussfolgern, dass er richtig ist. Liegt es daran, dass str4 einfach völlig undefiniert ist bzw.str4 kein Speicher zur Verfügung gestellt wird?str4 ist ein Nullzeiger. Nullzeiger dürfen nicht dereferenziert werden, sonst -> undefiniertes Verhalten. Konkret erzeugt das bei allen mir bekannten Compilern auf Betriebssystemen, die virtuellen Speicher anbieten, eine Schutzverletzung. Zitieren
kleinermann Geschrieben 26. November 2008 Geschrieben 26. November 2008 Danke, setze mich erst seit kurzem wieder mit c auseinander. Daher für alle die sich wie ich fragen was so ein Nullzeiger ist: Galileo Computing :: C von A bis Z – 16.3 Die Mysterie von NULL lg Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.