Tak więc czytałem, że gdy zmienne są zadeklarowane w języku C++, jeśli chcesz uzyskać optymalną pamięć podręczną, pamięć powinna pozostać przy naturalnym wyrównaniu. Przykład:Wyrównanie pamięci w języku C++
int a; // memory address should end in 0x0,0x4,0x8,0xC
int b[2]; // 8 bytes 0x0,0x8
int b[4]; // 16 bytes 0x0
Jednak w praktyce zmienne te nie stosują się do zasad „naturalne wyrównanie”, zmienna 16 bajt przebywał na adres pamięci, który zakończył się w 0xC. Dlaczego to ?
Tablice nie są objęte wyrównania, tylko poszczególne elementy są – Quentin
chcieć miejscu dokładna przypadku –
Nie ma sprawa naprawdę im po prostu eksperymentować, wszystko udało mi się znaleźć to, że niezależnie od zmiennej wielkości wszystko zawsze było 4 wyrównane bajtowo, chyba że był to 1-bajtowy typ danych. Po prostu ciekawy dlaczego. – Student123