B
Sarah511 schrieb:
aber wenn mein programm nicht einmal das cout statement ausgibt, kann ich auch nicht sehen wo eventuelle fehler liegen.
Tja, das ist hart, aber so ist C++ nunmal. Du merkst auch erst, dass du das Skalpell falschrum hältst, wenn dir die Finger abfallen. C++ ist heutzutage eine der wenigen Sprachen, bei denen viele Fehler lediglich "undefiniertes Verhalten" hervorrufen statt sofort klare Fehlermeldungen zu produzieren. Das liegt daran, dass der Compiler zur Erkennung dieser Fehler zusätzlichen Code einfügen müsste, der Speicherplatz und Laufzeit kostet, aber im Normalfall nicht gebraucht wird.
Das ist jetzt allgemein gesprochen. Dein konkreter Fehler wäre schon vom Compiler zu erkennen, weil du uninitialisierte Variablen benutzt. Das ist allerdings nur eine Warnung, die möglicherweise auch deaktiviert ist.
hat diese initialisierung denn auswirkungen auf das cout?
Strenggenommen ist diese Initialisierung so oder so nicht erlaubt; Arraygrößen müssen Konstanten sein. Du benutzt anscheinend einen Compiler, der als Erweiterung des Standards Arrays mit variablen Dimensionen unterstützt. Soweit so gut.
Wenn wir das mal ignorieren, dann erzeugt dein Programm undefiniertes Verhalten. Davon ist theoretisch das ganze Programm betroffen, nicht nur das cout. Auch bei naiver Betrachtungsweise gibt es allerdings keinen Grund, zu vermuten, dass es nach dem Ausführen einer fehlerhaften Anweisung, dem Erzeugen des Arrays, ohne Probleme weitergeht.
wieso macht das programm denn nichts?
Es sollte eigentlich sofort abstürzen.
oder wieso werden mir keine fehler angezeigt?
Sollten eigentlich. Sowas wie "Programm wurde durch SIGSEGV beendet." oder dergleichen.