Bestimmen der Array-Größe nach dynamischer Zuweisung in C
In C legen Arrays, die dynamisch mithilfe des new-Operators zugewiesen werden, ihre Größe nicht automatisch programmgesteuert offen. Diese Frage ergibt sich aus der Beobachtung, dass delete[] die Größe des zugewiesenen Arrays kennen muss, um Speicher effektiv freizugeben.
Warum keine integrierte Funktion zum Ermitteln der Array-Größe?
Im Gegensatz zu auf dem Stapel deklarierten Arrays, deren Größe mit sizeof() bestimmt werden kann, ist die Größe dynamisch zugewiesener Arrays während der Kompilierung unbekannt. Dies liegt daran, dass der Speichermanager der Laufzeit oder des Betriebssystems den zugewiesenen Speicher verwaltet, nicht der Compiler. sizeof() fungiert als Konstante zur Kompilierungszeit und kann die Größe dynamisch zugewiesener Arrays nicht dynamisch auswerten.
Alternative Strategien
Auch wenn C keine integrierte Funktion bietet Funktion, um die Größe des Arrays zu erhalten, gibt es alternative Ansätze:
int *arr = new int[256]; int *p = &arr[100]; int size = p - arr; // Subtracting pointers yields the size
Auswirkungen
Das Fehlen einer standardisierten Methode zur Bestimmung der Größe dynamisch zugewiesener Arrays in C-Stämmen aus dem Fokus der Sprache auf Flexibilität bei der Speicherverwaltung und Plattformunabhängigkeit. Während es in bestimmten Szenarien Einschränkungen mit sich bringt, ermöglicht es auch vielfältige Implementierungsstrategien und Optimierungsmöglichkeiten.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3