Quand dois-je utiliser _aligned_malloc()?
J'ai été lire le code héritage,qui invloves dans la mesure de la mémoire système de mise en commun, puis j'ai trouvé que le code utilise _aligned_malloc. Je me demande quelle est cette fonction et quand dois-je utiliser.
Grâce à vous tous.
Je n'ai lu MSDN mais ce que je voulais, c'était la réponse comme "un exemple de la raison pour vouloir un certain alignement est d'utiliser les données avec le jeu d'instructions SSE sur x86 où les données doivent être alignés à un multiple de 16".
J'ai enfin compris ce que ceux du code de moyens. merci encore.
Un autre exemple - processeur ARM. Il nécessite d'aligner toutes les données de 4 octets.
OriginalL'auteur | 2008-09-24
Vous devez vous connecter pour publier un commentaire.
Cette fonction est utile lors de l'alignement de votre allocation de mémoire est important pour vous.
Alignement signifie que la valeur numérique du pointeur retourné doit être divisible par un certain nombre, c'est à dire.
((unsigned int)ptr) % alignment
doit évaluer à 0.Un exemple d'une raison pour vouloir un certain alignement est d'utiliser les données avec le jeu d'instructions SSE sur x86 où les données doivent être alignés à un multiple de 16.
OriginalL'auteur Viktor
Voici un cas d'utilisation qui pourraient vous concerner. Dans mes 17 années de développement C/C++ j'ai une seule fois besoin de la
_aligned_malloc()
(WinOS mise en œuvre) etmemalign
POSIX (mise en œuvre) fonctions du noyau, et qui a été lors du codage de bas niveau du disque I/O. La raison pour cela est que lorsque vous n'utilisez pas le système d'exploitation mémoire tampon e/S ( ex. dans WinOS appelopenfile()
avec leFILE_FLAG_NO_BUFFERING
drapeau) et de la lecture/écriture sur le disque par le système d'exploitation nécessite le bloc de mémoire pour être aligné sur le secteur de disque de la taille; si le disque de la taille du secteur était de 512 octets, et que vous vouliez écrire 1234 octets sur le disque, je voudrais faire quelque chose comme ceci:OriginalL'auteur
Avez-vous vérifié la documentation MSDN?
Vous pouvez trouver l'entrée
ici.
OriginalL'auteur Bjoern