malloc-Ausrichtung
malloc gibt immer den Speicher zurück, der zum Speichern eines beliebigen Objekts geeignet ist, das eine grundlegende Ausrichtung hat und in den zugeordneten Speicher passt.Eine grundlegende Ausrichtung ist eine Ausrichtung, die kleiner oder gleich der größten Ausrichtung ist, die von der Implementierung ohne Ausrichtungsspezifikation unterstützt wird. (In Visual C++ ist dies die Ausrichtung, die für einen double oder 8 Bytes erforderlich ist.In einem Code, der auf 64-Bit-Plattformen ausgerichtet ist, sind es 16 Bytes.) Beispielsweise kann eine Vier-Byte-Speicherbelegung an einer Begrenzung ausgerichtet werden, die ein Objekt unterstützt, das maximal vier Byte groß ist.
Visual C++ unterstützt Typen mit einer erweiterten Ausrichtung, die auch als über-ausgerichtete Typen bezeichnet werden.Die SEE-Typen __m128 und __m256 sowie die Typen, die von __declspec(align(n)) deklariert werden, wobei n größer ist als 8, verfügen beispielsweise über eine erweiterte Ausrichtung.Eine Speicherausrichtung an einer Grenze, die für ein Objekt geeignet ist, das eine erweiterte Ausrichtung erfordert, wird von malloc nicht gewährleistet.Verwenden Sie zur Speicherbelegung für über-ausgerichtete Typen _aligned_malloc und verwandte Funktionen.