Bestimmen der Array-Größe nach der dynamischen Zuweisung in C
In C geben Arrays, die dynamisch mithilfe des neuen Operators zugewiesen werden, ihre Größe nicht automatisch programmgesteuert an. 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 ermitteln, 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.
Das obige ist der detaillierte Inhalt vonWie können Sie die Größe eines dynamisch zugewiesenen Arrays in C bestimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!