C ++ Was ist der Unterschied zwischen statischer und dynamischer Zuordnung dieses Arrays? [Duplikat

Diese Frage hat hier bereits eine Antwort:

Differenz zwischen Array-Typ und mit malloc @ zugewiesenem Arr 9 answers
int length = 5;
int hi[length];

vs

int length = 5;
int *hi = new int[length];

Mir wurde beigebracht, dass Compiler sich in C beschweren, wenn Sie versuchen, Arrays mit einer nicht konstanten Größe statisch zuzuweisen. Wenn Sie also jemals ein Array unbekannter Größe benötigen, müssen Sie den Speicher dynamisch zuweisen. Nun, da es Compiler gibt, die das erste Beispiel zulassen, was genau machen sie dann? Gehen sie noch in das Datensegment oder gehen sie nicht auf den Haufen? Wenn sie auf dem Haufen sind, was ist dann der Unterschied zwischen den Beispielen und warum müsste ich im 2. Beispiel noch delete [] aufrufen, aber nicht im 1. Beispiel?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage