mac2000 [ Konsul ]
C++/C wielkość struktury
W programie mam taką strukturę:
struct box‹
box *nast; //wskaźnik do następnego elementu w liście
unsigned char c; //znak
›;
Dlaczego gdy tworzę nowy obiekt przez "new box", całość zajmuje 8 Bajtów, a nie np. 2 ?
Gdy tworze listę z 10 000 000 elementami program pobiera ponad 80 MB pamięci. Można jakoś zmniejszyć ilość zabieranej pamięci przez tą strukturę?
Voutrin [ łojant ]
poczytaj sobie o dyrektywie #pragma pack.
Scatterhead [ P ]
jeżeli w tej strukturze masz tylko znak, to jest ona bardzo nieefektywma.
unsigned char to jeden bajt, a wskaznik, zalezy od architektury, ale o wiele wiecej. wiec masz bardzo duzy narzut wielkosci samej struktury, w ktorej sama zawartosc zajmuje o wiele mniej miejsca.