Schwierigkeiten mit der Syntax von alignas

8

Ich versuche, alignas für Zeiger zu verwenden, die Klassenmitglieder sind, und ehrlich gesagt bin ich nicht sicher, wo ich es setzen sollte.

Zum Beispiel:

%Vor%

Ich hoffte, dass die Daten für ptr auf einen 64-Byte-Block ausgerichtet wurden. Mit dem Intel-Compiler tut es das nicht.

Kann mir bitte jemand in die richtige Richtung zeigen?

    
user1683586 17.12.2014, 20:36
quelle

1 Antwort

5

Wenn Sie das Schlüsselwort alignas(N) für ein Mitglied einer Klasse verwenden, wird dieses Mitglied entsprechend der angegebenen Ausrichtung ausgerichtet, und nicht auf eine Entität, auf die möglicherweise verwiesen wird. Bei der Initialisierung eines Zeigers mit einem Wert gibt es schließlich keine Kontrolle, um die bereits vorhandenen Objekte auszurichten.

Vielleicht möchten Sie sich std::align() ansehen, was

erfordert
  1. Eine Spezifikation für die Ausrichtung des zurückgegebenen Zeigers.
  2. Die Größe des ausgerichteten Blocks.
  3. Ein Zeiger auf zugewiesenen Speicher.
  4. Die Menge des zugewiesenen Speichers.

Es wird ein entsprechend ausgerichteter Zeiger zurückgegeben, sofern nicht genügend Platz vorhanden ist, um sowohl die Ausrichtungs- als auch die Größenanforderungen zu erfüllen. Wenn es nicht genug Platz gibt, gibt die Funktion einen Nullzeiger zurück.

    
Dietmar Kühl 17.12.2014, 20:57
quelle

Tags und Links