Heim >Backend-Entwicklung >C++ >Hat „std::array' die gleiche Größe und das gleiche Speicherlayout wie ein integriertes Array?

Hat „std::array' die gleiche Größe und das gleiche Speicherlayout wie ein integriertes Array?

Linda Hamilton
Linda HamiltonOriginal
2024-12-09 21:35:16453Durchsuche

Does `std::array` Have the Same Size and Memory Layout as a Built-in 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn