Realmente tengo que preocuparme por la alineación cuando uso el nuevo operador de ubicación?

Leo esto ¿Cuándo debería preocuparme por la alineación? pero todavía no sé si tengo que preocuparme por el puntero no alineado devuelto por el nuevo operador de colocación, como en este ejemplo:

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) no está alineado con4. Pero todo funciona bien: ejemplo completo aquí:http: //ideone.com/jBrk

Si esto depende de la arquitectura, entonces estoy usando: linux / powerpc / g ++ 4.x.x.

[ACTUALIZACIÓN] Justo después de publicar esta pregunta, leí este artículo:http: //virtrev.blogspot.de/2010/09/memory-alignment-theory-and-c-examples.htm. Tal vez los únicos inconvenientes en mi caso serían la penalización de rendimiento, ¿quiero decir que el costo de acceso no alineado es más que alineado?

Respuestas a la pregunta(5)

Su respuesta a la pregunta