Array - Dimension
-
Es muss ein konstanter, integraler Typ grösser 0 sein. (8.3.4/1).
Dass ein nicht konstanter Typ unterstützt wird, finde ich ein wenig komisch. (kriegst du den wenigstens eine Warnung?).
-
drakon schrieb:
Es muss ein konstanter, integraler Typ grösser 0 sein. (8.3.4/1).
siehe auch http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Zero-Length.html#Zero-Length
drakon schrieb:
Dass ein nicht konstanter Typ unterstützt wird, finde ich ein wenig komisch. (kriegst du den wenigstens eine Warnung?).
siehe auch http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Variable-Length.html#Variable-Length
kein bug, das ist ein feature.
-
volkard schrieb:
kein bug, das ist ein feature.
Hehe. Jaja. Das sagen sie alle.

Ne, im Ernst, das es ein Feature ist glaube ich schon. Imo ist das (heutzutage) aber ein wenig überflüssig.
Ich bin sowieso kein Fan von Implementierungsspezifischen Funktionalitäten (habe sie auch bei VC ausgestellt).btw:
volkard, kann es sein, dass du dir eine längere Pause gegönnt hast?
Habe dich schon lange nicht mehr gesehen.
-
drakon schrieb:
Ne, im Ernst, das es ein Feature ist glaube ich schon. Imo ist das (heutzutage) aber ein wenig überflüssig.
wieso? new() braucht hunderte von takten, den stackpointer runterzusetzen eher nur einen. so lahm, wie heutzutage viele programme sind, ist das feature doch was nettes.
Ich bin sowieso kein Fan von Implementierungsspezifischen Funktionalitäten (habe sie auch bei VC ausgestellt).
ich mag sowas. aber die dynamischen arrays benutze ich auch nicht.
volkard, kann es sein, dass du dir eine längere Pause gegönnt hast?
ja.
-
Mh gut, okay, aber so ein Array muss ja auch eine maximale Größe haben oder?
Wie groß ist diese?
Und dann nehm ich einfach immer den Integertyp der ">= max.Größe von Dimension". Ist dass ein guter Plan?MfG
Stromberg
-
Stromberg schrieb:
Mh gut, okay, aber so ein Array muss ja auch eine maximale Größe haben oder?
Wie groß ist diese?Hängt von der Stackgrösse ab.
Stromberg schrieb:
Und dann nehm ich einfach immer den Integertyp der ">= max.Größe von Dimension". Ist dass ein guter Plan?
Ich denke, mit
size_tfährst du nicht schlecht.
-
Nexus schrieb:
Hängt von der Stackgrösse ab.
Nö.
-
Warum dass geht verstehe ich jetzt gar nimma, is dass immer noch das Feature?
int main() { size_t a = 0; cin >> a; int b[a]; }Legt der Compiler dass dann automatisch aufm Heap ab?
MfG
Stromberg
-
ja, genau das ist das feature.
nee, schon brav auf dem stack.
dazu muß doch nur der stackpointer um a*sizeof(int) bytes verschoben werden.
siehe auch alloca()
-
volkard schrieb:
dazu muß doch nur der stackpointer um a*sizeof(int) bytes verschoben werden.
Jupp. Was in bestimmten Fällen auch eine recht gute Idee ist, da sowas wie
sub esp, xywesentlich effizienter ist als eine Heap Allokation mit ihren Hunderten oder Tausenden Instruktionen (+ meistens noch syscalls).