We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Say I need to allocate struct A but b needs to be 4 aligned.
struct A
b
struct A { char a; char b[42]; };
I guess I can manually pad a pointer returned by malloc(). Any cleaner way? Like gcc's __attribute__((aligned(4))) but that aligns the whole structure. And I can't change it's layout.
malloc()
__attribute__((aligned(4)))
... but that aligns the whole structure
Member alignment effectively builds on top of the structure base alignment, so you need the structure alignment to be alignas(4) in any case.
And I can't change it's layout.
If you can't add padding between a and b, so you need "a" on a weird base alignment you're definitely "off the grid" in terms of standard features the language can provide. If you must do this, then I think you're going to have to pad malloc return pointers by hand.