Domande taggate «memory-alignment»

8
Scopo dell'allineamento della memoria
Certo, non capisco. Supponi di avere una memoria con una parola di memoria della lunghezza di 1 byte. Perché non riesci ad accedere a una variabile lunga 4 byte in un singolo accesso alla memoria su un indirizzo non allineato (cioè non divisibile per 4), come nel caso degli indirizzi …

16
Esempi convincenti di allocatori C ++ personalizzati?
Quali sono alcuni dei buoni motivi per abbandonare std::allocatoruna soluzione personalizzata? Hai mai incontrato situazioni in cui era assolutamente necessario per correttezza, prestazioni, scalabilità, ecc.? Qualche esempio davvero intelligente? Gli allocatori personalizzati sono sempre stati una caratteristica della libreria standard di cui non ho avuto molto bisogno. Mi stavo solo …


4
Le variabili dello stack sono allineate dall'attributo __ GCC __ ((align (x)))?
Ho il codice seguente: #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]); } E ho il seguente output: 0x7fffbfcd2da0 0x7fffbfcd2da4 0x7fffbfcd2da8 0x7fffbfcd2dac Perché l'indirizzo di a[0]non è un multiplo di 0x1000? Cosa __attribute__((aligned(x)))fa esattamente ? Ho frainteso …

2
Perché gli indirizzi di argc e argv sono separati da 12 byte?
Ho eseguito il seguente programma sul mio computer (Intel a 64 bit con 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: …

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.