Questions marquées «memory-alignment»

8
Objectif de l'alignement de la mémoire
Certes, je ne comprends pas. Supposons que vous ayez une mémoire avec un mot mémoire d'une longueur de 1 octet. Pourquoi ne pouvez-vous pas accéder à une variable longue de 4 octets en un seul accès mémoire sur une adresse non alignée (c'est-à-dire non divisible par 4), comme c'est le …

16
Des exemples convaincants d'allocateurs C ++ personnalisés?
Quelles sont de très bonnes raisons d'abandonner std::allocatoren faveur d'une solution personnalisée? Avez-vous rencontré des situations où cela était absolument nécessaire pour l'exactitude, les performances, l'évolutivité, etc.? Des exemples vraiment intelligents? Les allocateurs personnalisés ont toujours été une fonctionnalité de la bibliothèque standard dont je n'avais pas vraiment besoin. Je …


4
Les variables de pile sont-elles alignées par le __attribute __ ((aligné (x)))?
J'ai le code suivant: #include <stdio.h> int main(void) { float a[4] __attribute__((aligned(0x1000))) = {1.0, 2.0, 3.0, 4.0}; printf("%p %p %p %p\n", &a[0], &a[1], &a[2], &a[3]); } Et j'ai la sortie suivante: 0x7fffbfcd2da0 0x7fffbfcd2da4 0x7fffbfcd2da8 0x7fffbfcd2dac Pourquoi l'adresse de a[0]n'est pas un multiple de 0x1000? Que fait exactement __attribute__((aligned(x)))? J'ai mal …

2
Pourquoi les adresses d'argc et d'argv sont-elles séparées de 12 octets?
J'ai exécuté le programme suivant sur mon ordinateur (Intel 64 bits exécutant Linux). #include <stdio.h> void test(int argc, char **argv) { printf("[test] Argc Pointer: %p\n", &argc); printf("[test] Argv Pointer: %p\n", &argv); } int main(int argc, char **argv) { printf("Argc Pointer: %p\n", &argc); printf("Argv Pointer: %p\n", &argv); printf("Size of &argc: %lu\n", …

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.