C/C++ ile ilgilenen herkes en azından bir kere struct yazmıştır. Şimdi bir struct inceleyelim:
struct hede { char char_hedesi; int int_hedesi; char char_hedesi2; };
Peki bu bellekte kaç byte alan kaplar hesaplayalım: 2 char bide int yani 2*1 + 4 = 6 byte Fakat derleyiciyle bu yapının boyutunu hesaplarsak ilginç bir sonuç çıkıyor ortaya: 12 byte!! Burdan da anlayabileceğimiz üzere; C derleyicisi bir struct içinde değişken tanımladıktan sonra diğer değişkeni en yakın 4 byte öteye koyuyor:
Yani bellek şu şekilde - C - boş - boş - boş - int - int - int - int - C - boş - boş - boş Görüldüğü üzere 6 byte boşa harcanmış.. Bu yapıdan 1000 tane olursa 6000byte boşa gider..
Bu yüzden yapılması gereken; struct içinde değişkenleri, boyutları en az 4 byte yapacak şekilde bir araya getirmek..
Struct'u şu hale getirsek;
struct hede { char char_hedesi; char char_hedesi2; int int_hedesi; };
struct hede {
char char_hedesi;
int int_hedesi;
char char_hedesi2;
};
Peki bu bellekte kaç byte alan kaplar hesaplayalım: 2 char bide int yani 2*1 + 4 = 6 byte
Fakat derleyiciyle bu yapının boyutunu hesaplarsak ilginç bir sonuç çıkıyor ortaya: 12 byte!!
Burdan da anlayabileceğimiz üzere; C derleyicisi bir struct içinde değişken tanımladıktan sonra diğer değişkeni en yakın 4 byte öteye koyuyor:
Yani bellek şu şekilde - C - boş - boş - boş - int - int - int - int - C - boş - boş - boş
Görüldüğü üzere 6 byte boşa harcanmış.. Bu yapıdan 1000 tane olursa 6000byte boşa gider..
Bu yüzden yapılması gereken; struct içinde değişkenleri, boyutları en az 4 byte yapacak şekilde bir araya getirmek..
Struct'u şu hale getirsek;
struct hede {
char char_hedesi;
char char_hedesi2;
int int_hedesi;
};
boyut: 8 byte
şu halde
struct hede {
char char_hedesi;
char char_hedesi2;
char char_hedesi3;
char char_hedesi4;
int int_hedesi;
};
Boyut: yine 8 byte
Evet küçücük bi yer değiştirmeyle 2 char daha koyup daha az bellek alanı kullandık
Buraya kadar okuyanlara teşekkürler... bilenler kusura bakmasın, bilmeyenlerin işine yarar umarım