Alignement avec malloc
malloc est garanti pour retourner une mémoire qui est correctement alignée pour stocker un objet qui a un alignement simple et qui peut contenir la quantité de mémoire allouée.Un alignement simple est un alignement qui est inférieur ou égal au plus grand alignement pris en charge par l'implémentation sans spécification d'alignement. (Dans Visual C++, il s'agit de l'alignement qui est requis pour un double, ou 8 octets.Dans le code qui cible les plateformes 64 bits, il correspond à 16 octets.) Par exemple, une allocation de quatre octets serait alignée sur une limite qui prend en charge un objet de quatre octets ou plus petit.
Visual C++ permet les types qui ont un alignement étendu, également appelés types sur-alignés.Par exemple, les types SSE __m128 et __m256, et les types déclarés à l'aide de __declspec(align(n)) où n est supérieur à 8, ont un alignement étendu.L'alignement de la mémoire sur une limite adaptée à un objet qui requiert l'alignement étendu n'est pas garanti par malloc.Pour allouer de la mémoire pour les types sur-alignés, utilisez _aligned_malloc et les fonctions liées.