I\'m looking for a good (comprehensive) doc about memory alignment in C++, typical approaches, differences between compilers, and common pitfalls. Just to check if my understand
Non-heap-allocated arrays of char
have no specific requirements on their alignment. So your buffer of a thousand characters could be on an odd offset. Trying to read an int
from that offset (reinterpreted as an int pointer obvious) would either result in poor performance or even a bus error on some hardware if the compiler doesn't split it up into separate read+bitmask operations.
Heap-allocated arrays of char
are guaranteed to be aligned suitably to store any object type, so this is always an option.
For non-heap based storage, use boost::aligned_storage
which ensures that the space is aligned properly for general use.