Wyrównywanie tablic w pamięci - co w przypadku tablic boolowskich?

Wyrównywanie tablic w pamięci - co w przypadku tablic boolowskich?
  • Rejestracja: dni
  • Ostatnio: dni
0

Tablica elementów typu prostego wyrównana jest w całości wg rozmiaru typu składowego - nie zawiera dziur.

cyt. za http://www.mimuw.edu.pl/~marpe/arch/akrd.pdf (23 strona).

Jasne. Ale, co jeśli mamy tablicę booleanów?
Jak rozumiem, boolean tak naprawdę zajmuje jeden bajt (nie bit), a więc - tablica będzie wyrównana do 1 bajta, czy tak?
To teraz pytanie - jeśli rozmiar booleana to 1 bajt, to czy w takim razie w tablicy:
a) Każdy boolean będzie siedział w swoim własnym, osobnym bajcie;
b) Będzie po 8 booleanów w każdym bajcie w tablicy?
Przypuszczałbym, że a), ale wtedy tablica będzie zawierała dziury, których wg. zapodanego PDFa miało nie być.

No więc, jak to jest ułożone?

spartanPAGE
  • Rejestracja: dni
  • Ostatnio: dni
2

Rozmiar typu bool to 1 bajt.
Za pomocą operacji bitowych można wyspecjalizować kontener w przechowywaniu liczb typu bool tak, aby zwiększając narzut czasowy zmniejszyć narzut pamięci.

  • Rejestracja: dni
  • Ostatnio: dni
0

okok, dzięki.

Na oko to się wydaje być strasznym marnotrastwem, no ale... wierzę, że ma to uzasadnienie.

Dzięki.

spartanPAGE
  • Rejestracja: dni
  • Ostatnio: dni
1

W komputerze bajt jest najmniejszą adresowalną jednostką pamięci. Dlatego.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
1

jak masz vector<bool> v; - to nie masz marnotrawstwa, jeden bool -> jeden bit.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.