REKLAMA

Programista 1/2019 (80) – kwiecień 2019 – Wyrównanie pamięci w C++

Kwestie związane z wyrównaniem pamięci (ang. memory alignment) potrafią mieć niebagatelny wpływ na wydajność kodu, a czasami także na jego stabilność. Jeszcze do niedawna standard języka C++ dość wstrzemięźliwie określał narzędzia, za pomocą których programista mógł specyfikować wyrównanie struktur danych. Lukę uzupełniały same kompilatory, dostarczając – z definicji nieprzenośnych – rozszerzeń i atrybutów. Przenośność można było uzyskać poprzez mozolne i ostrożne implementowanie własnych mechanizmów alokacji pamięci. Dopiero standard C++17 został wzbogacony o elementy umożliwiające przenośne specyfikowanie wymagań dotyczących wyrównania pamięci.

Zagadnienia poruszane w tym artykule:

  • Jak definiujemy wyrównanie?
  • Zagrożenia dostępu niewyrównanego;
  • Skąd się biorą niewyrównane dostępy – wyrównanie pól w typach złożonych;
  • Limity wyrównania...
  • ...i jak je przekraczać;
  • Jeszcze więcej operatorów do przeciążenia!
  • Kłamstwa i kłamstewka kompilatorów;

Artykuł pochodzi magazynu Programista nr 80 (1/2019). Jest to wydanie z kwietnia 2019 r. Szczegółowy spis treści: https://programistamag.pl/programista-1-2019-80/

Autorem artykułu jest Bartosz Szreder. Absolwent informatyki Uniwersytetu Warszawskiego. Programista z zamiłowania, powołania i zawodu. Pracuje jako programista silnika gier i narzędzi developerskich w Huuuge Games.

>>FRAGMENT ARTYKUŁU DO POBRANIA<<