Muss ich mich wirklich um die Ausrichtung kümmern, wenn ich den Operator "Placement New" verwende?

Ich lese dasWann sollte ich mich um die Ausrichtung kümmern? aber ich weiß immer noch nicht, ob ich mir Sorgen machen muss, dass der Zeiger durch das Platzieren eines neuen Operators nicht ausgerichtet wurde - wie in diesem Beispiel:

class A {
public:
   long double a;
   long long b;
   A() : a(1.3), b(1234) {}
};

char buffer[64];

int main() {
   // (buffer + 1) used intentionally to have wrong alignment
   A* a = new (buffer + 1) A(); 
   a->~A();
}

__alignof(A) == 4, (buffer + 1) ist nicht an @ ausgericht4. Aber alles funktioniert gut - vollständiges Beispiel hier:http: //ideone.com/jBrk

Wenn dies von der Architektur abhängt, verwende ich: linux / powerpc / g ++ 4.x.x.

[UPDATE] Gerade nachdem ich diese Frage gestellt habe, habe ich diesen Artikel gelesen:http: //virtrev.blogspot.de/2010/09/memory-alignment-theory-and-c-examples.htm. Vielleicht wären die einzigen Nachteile in meinem Fall Leistungseinbußen, ich meine, unausgerichtete Zugangskosten mehr als ausgerichtet?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage