Udostępnij za pośrednictwem


Konflikty z kompilatorem x86

Typy danych, które są większe niż 4 bajty nie są automatycznie wyrównane na stosie, gdy używasz kompilator x 86 do kompilowania aplikacji.Ponieważ architektura dla kompilator x 86 jest stos wyrównanego 4-bajtowy, coś większego niż 4 bajty, na przykład, liczba całkowita 64-bitowych, nie może automatycznie wyrównany, do 8-bajtowego adresu.

Praca z danymi odwołań do niewyrównanych ma dwa skutki.

  • Może to trwać dłużej dostępu unaligned lokalizacje niż trzeba, by dostęp lokalizacje wyrównanego do.

  • Nie można użyć odwołań do niewyrównanych lokalizacje w operacjach blokujących.

Jeśli wymagasz więcej ścisłego dopasowania, należy użyć __declspec(align(N)) on your variable declarations.Powoduje to, że kompilator dynamicznie wyrównać stosu do spełnienia specyfikacji.Dynamicznie dostosowującym stosu w czasie wykonywania może jednak powodować wolniejsze wykonywanie naszej aplikacji.

Zobacz też

Informacje

Typy i magazynowania

align (C++)