This document discusses aligned versus unaligned memory access. It notes that unaligned access occurs when accessing N bytes of data from an address not evenly divisible by N. While some architectures can handle unaligned access, it reduces performance or causes exceptions. The compiler ensures structures and variables are aligned, but unaligned access can occur from casts or pointer arithmetic. The get_unaligned() and put_unaligned() macros or memcpy() can be used to avoid unaligned access issues.