Ich würde gerne wissen, wie ein Array variabler Länge verwaltet wird (welche zusätzlichen Variablen oder Datenstrukturen werden auf dem Stack gehalten, um Arrays variabler Länge zu haben).
Vielen Dank.
Es ist nur ein Array mit dynamischer Größe (implementierungsabhängig, aber am häufigsten auf dem Stack). Es ist in den alten Tagen so ähnlich wie alloca
, mit der Ausnahme, dass sizeof
die tatsächliche Größe des Arrays zurückgibt, was bedeutet, dass die Größe des Arrays auch irgendwo gespeichert werden muss (auch implementationsabhängig, aber wahrscheinlich auf dem Stapel auch).
Die Größe von Arrays mit variabler Länge wird zur Laufzeit anstelle der Kompilierungszeit bestimmt.
Wie es verwaltet wird, hängt vom Compiler ab.
GCC beispielsweise weist Speicher auf dem Stack zu.
Aber es gibt keine spezielle Struktur. Es ist nur ein normales Array, dessen Größe zur Laufzeit bekannt ist.
alternativ könnten Sie einige Behälter verwenden, z. ArrayList in Java oder Vektor in c / c ++