Problem z liczeniem bitów

0

Witam. Mam następujący problem: fragment kodu opisuje strukturę wiadomości IPC używanej do porozumiewania się między procesami.
struct message
{
long int a;
char tab[150];
int b;
int c;
} wiadomosc;

sizeof(message) wskazuje 164 bity. Long int - 4, char [150] - 150, int - 4, pusta struktura - 1. Łącznie 163 bity. Pytanie brzmi : skąd dodatkowy bit?

1

Nie bity tylko bajty... 3 * Int = 12 bajtów. Char[150] - 150 bajtów. Razem 162 bajty. Dwa bajty dodaje najwyraźniej kompilator w ramach paddingu. (http://en.wikipedia.org/wiki/Data_structure_alignment)

0

Poczytaj o "structure alignment".

Np. takie coś zajmuje 16 bajtów:

struct {
  char a;
  int b;
  char c;
  int d;
} e; 
0

W skrócie: do struktury dokładane są dodatkowe bajty w celu efektywniejsze wykorzystania komputera, potrzeba trochę więcej pamięci ale zyskujemy dużo większą prędkość.

1 użytkowników online, w tym zalogowanych: 0, gości: 1