Garantiert der C ++ 17-Standard, dass die Adresse einer Union dieselbe ist wie die Adresse ihrer Mitglieder?

8

Ich arbeite gerade an der Programmierung eines Pool-Allokators. Meine Frage läuft auf den folgenden Code hinaus:

%Vor%

Ist die Adresse von mu immer die selbe wie für mu2?

    
Brotcrunsher 02.05.2017, 21:24
quelle

1 Antwort

18

Ja.

9.2 / 19 (12.2 / 24 in N4659):

  

Wenn ein Standard-Layout-Klassenobjekt über nicht statische Datenmember verfügt, entspricht seine Adresse der Adresse seines ersten nicht statischen Datenmembers.

Wenn die Union selbst Standard-Layout ist, dann ist die Adresse der Union die gleiche wie die ihrer Mitglieder.

Die Adressen der Mitglieder sind alle gleich, dank 9.5 / 1 (12.3 / 2 in N4659):

  

Jedes nicht statische Datenelement wird so zugeordnet, als wäre es das einzige Mitglied eines   Struktur. Alle nicht statischen Datenelemente eines Union-Objekts haben dieselbe Adresse.

    
Fanael 02.05.2017, 21:41
quelle

Tags und Links