In C wirft die Vorstellung, ein Array mit einer zur Laufzeit bestimmten Größe zu deklarieren, oft Bedenken auf . Eine kürzliche Begegnung mit einem eigenartigen Codeausschnitt hat jedoch die Frage aufgeworfen: Wie kann ein Array ohne dynamische Zuweisung deklariert werden, dessen Größe jedoch zur Laufzeit angegeben wird?
Betrachten Sie den folgenden C-Code:
int main(int argc, char **argv) { size_t size; cin >> size; int array[size]; for (size_t i = 0; i < size; i++) { array[i] = i; cout << i << endl; } return 0; }
Compiler wie GCC haben eine Funktion von C99 übernommen, die Arrays variabler Größe ermöglicht. Diese innovative Funktion ermöglicht die Deklaration von Arrays auf dem Stack mit einer Größe, die während der Ausführung bestimmt werden kann. Im Gegensatz zur dynamischen Zuweisung mit new oder malloc weisen Arrays variabler Größe jedoch Speicher auf dem Stapel zu, ähnlich wie die Deklaration eines Arrays mit einer festen Größe.
Arrays variabler Größe bieten einen Leistungsvorteil gegenüber der dynamischen Zuweisung, da sie dies vermeiden der Overhead der Heap-Speicherverwaltung. Durch die Zuweisung von Speicher auf dem Stapel verringern diese Arrays das Risiko einer Speicherfragmentierung und verbessern die Programmleistung.
Es ist wichtig zu betonen, dass diese Funktion nur für C99 gilt und in älteren Versionen der C-Sprache nicht unterstützt wird. Wenn Sie daher auf Code stoßen, der auf Arrays variabler Größe basiert, stellen Sie sicher, dass Sie ihn mit einem C99-kompatiblen Compiler kompilieren, um Fehler bei der Speichergröße zu vermeiden.
Das obige ist der detaillierte Inhalt vonWie kann ich in C ein Array mit Laufzeitgröße ohne dynamische Speicherzuweisung deklarieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!