c++ dynamisches oder statisches array?
-
Hallo,
ich habe folgenen Programmcode:int len;
cin >> len;
int a[len];Den Compiler stoert das nicht. Das muesste doch jetzt ein dynamisches Array sein, weil ja len beim compilieren noch nicht bekannt ist?
Aber ich dachte eigentlich, dass man dynamische Arrays so zuweisen muss:int *a = new int[len];
Oder erkennt der compiler sogar, dass len laufzeitabhaengig ist, und erzeugt dann in der dritten Zeile ein dynamisches Array, obwohl z.B. "int a[10]" ein statisches Array erzeugen wuerde?
danke fuer's Lesen
-
Das ist eigentlich ungültiger C++-Code. Kann es sein, das dein Compiler C99-Code versteht? Würde ich bei C++-Dateien abschalten.
-
Rufe deinen Compiler doch mal mit den Optionen -Wall -pedantic -pedantic-error (Standardeinstellung bei mir) auf und schon hast du Deine gewünschte Fehlermeldung.
Grüße... Heiko
-
Es ist zulässig. Wieviel Platz eine Funktion auf dem Stack für lokale Variable reserviert, kann zur Laufzeit entschieden und verändert werden. Das geht sogar schon in C, z.B. hier (http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf) auf S.80 (PDF-S.92).
-
Und wen interessiert C? Es geht hier um C++! Ich gehe ja auch nicht ins Java-Forum und sage "Das geht sogar in C#!".
-
Es ist unzlässig und eine Erweiterung von G++.
-
owkt schrieb:
Es ist zulässig. Wieviel Platz eine Funktion auf dem Stack für lokale Variable reserviert, kann zur Laufzeit entschieden und verändert werden. Das geht sogar schon in C, z.B. hier (http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf) auf S.80 (PDF-S.92).
Aber auch da erst seit dem 99er-Standard .... auf dem verständlicherweises der C++-Stamdard von 98 nicht basiert.
(Du solltest mal Deine Formulierung "sogar schon in C" überdenken ... anscheinend ist C++ nicht einfach nur "C 1.1")Gruß,
Simon2.