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:
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.