Sdílet prostřednictvím


Konflikty s překladačem x86

Typy dat, které jsou větší než 4bajty nejsou automaticky zarovnány v zásobníku při kompilaci aplikace pomocí x86 překladače. Protože architektura x86 překladače je zarovnaný 4bajtový zásobník, tak nic většího než 4bajty, například 64bitové celé číslo, nemůže být automaticky zarovnáno do 8bajtové adresy.

Práce s nezarovnanými daty má dva důsledky.

  • Přístup k nezarovnaným umístěním může trvat déle než přístup k zarovnaným umístěním.

  • Nezarovnané umístění nemůže být použito v propojených operacích.

Pokud požadujete více přísné zarovnání, použijte __declspec(align(N)) on your variable declarations. To způsobí, že překladač dynamicky zarovná zásobník, tak aby splňoval vaše požadavky. Nicméně, dynamické nastavení zásobníku za běhu může způsobit pomalejší provádění aplikace.

Viz také

Odkaz

Typy a úložiště

align (C++)