Arama butonu
Bu konudaki kullanıcılar: 1 misafir
4
Cevap
248
Tıklama
0
Öne Çıkarma
Aklıma bişey geldi unutmadan paylaşayım (C/C++ ile ilgili)
D
20 yıl
Yüzbaşı
Konu Sahibi

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;
};

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