How do I handle alignment and alignas/alignof in C++?

In C++, alignment is crucial when dealing with memory layout for structs, classes, and other types. It determines how the data is organized in memory and can affect performance due to CPU access patterns. The standard provides two keywords, alignas and alignof, to manage alignment easily.

The alignof operator is used to query the alignment requirements of a type, while alignas allows you to specify a custom alignment for your types.


#include <iostream>

struct alignas(16) AlignedStruct {
    int a;
    char b;
};

int main() {
    std::cout << "Alignment of AlignedStruct: " << alignof(AlignedStruct) << std::endl;
    return 0;
}
    

alignment alignas alignof C++ memory layout performance optimization