_ _unaligned

The _ _unaligned keyword is a type modifier in pointer definitions, which indicates to the compiler that the data pointed to may not be properly aligned on a correct address. To be properly aligned, the address of an object must be a multiple of the size of the type. For example, 2-byte objects must be aligned on even addresses. When data is accessed through a pointer declared _ _unaligned, the compiler generates the additional code necessary to load or store, or read or write the data without causing alignment errors. It is best to avoid use of misaligned data altogether, but in some cases the usage may be justified by the need to access packed structures such as shared disk structures or I/O hardware.

Chapter 3, Porting Visual C++ Source Code, discusses the alignment problem and the use of _ _unaligned in detail.