così ho letto che quando le variabili sono dichiarate in C++, se si vuole ottenere la cache ottimale legge la memoria deve attenersi al suo allineamento naturale. Esempio:C++ allineamento memoria
int a; // memory address should end in 0x0,0x4,0x8,0xC
int b[2]; // 8 bytes 0x0,0x8
int b[4]; // 16 bytes 0x0
Ma in pratica queste variabili non seguono le regole "allineamento naturale", una variabile di 16 byte risiedeva in un indirizzo di memoria che si è conclusa in 0xC. Perchè è questo ?
array non sono interessati da allineamento, solo i singoli elementi sono – Quentin
potrebbe desiderare di sito il caso esatto –
Non c'è nessun caso davvero im solo sperimentando, tutto quello che ho trovato è stato che, indipendentemente dalle dimensioni variabili tutto era sempre 4 byte allineato a meno che non fosse un tipo di dati da 1 byte. Solo curioso di sapere perché. – Student123