Heim >Backend-Entwicklung >C++ >Hat „std::array' die gleiche Größe und das gleiche Speicherlayout wie ein integriertes Array?
Ist die Größe und das Speicherlayout von std::array identisch mit einem Array?
Trotz der Standarddefinition von std::array mit contiguous Obwohl Speicher und Leistung mit einem normalen Array vergleichbar sind, lässt es hinsichtlich der genauen Größe und des Speichers einige Unklarheiten zu Layout.
Standardanforderungen
Abschnitt 23.3.2.1/2 des Standards besagt, dass ein Array ein Aggregat ist, das mit einer Initialisierungsliste initialisiert wird, die bis zu N konvertierbare Elemente enthält T. Dies legt nahe, dass std::array die Werte selbst speichern muss, ohne jegliche Hilfsdaten.
Potenziell Variationen
Der Standard garantiert jedoch nicht ausdrücklich, dass std::array die gleiche Größe und das gleiche Speicherlayout wie ein integriertes Array hat. Theoretisch könnte ein Compiler nach den angegebenen Daten zusätzliche Hilfsdaten speichern oder andere Füll- oder Ausrichtungsregeln anwenden.
Überlegungen zur Superausrichtung
Eingebaute Arrays können Super nicht unterstützen -Ausrichtungsanforderungen, z. B. Daten für Intels SSE-Anweisungen. Obwohl die Spezifikation von std::array Super-Alignment zulässt, wird dies nicht ausdrücklich garantiert.
Implementierungsspezifische Implikationen
Schlussfolgerung: Die Anforderungen des Standards geben keine endgültigen Vorgaben vor Dieses std::array muss die gleiche Größe und das gleiche Speicherlayout wie ein integriertes Array haben. Obwohl aus der Dokumentation hervorgeht, dass es gleichermaßen speichereffizient sein sollte, bleibt es immer noch umsetzungsspezifisch. Daher kann man sich nicht auf die Annahme einer identischen Größe und Speicheraufteilung verlassen.
Das obige ist der detaillierte Inhalt vonHat „std::array' die gleiche Größe und das gleiche Speicherlayout wie ein integriertes Array?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!