Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
4
Cevap
246
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

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



A
20 yıl
Binbaşı

Peki bu dedigin her derleyicide aynı şekilde mi ?
Yani bence yılların C'si boyle ilginclik yapmaması gerek.
Yeni akıllı compiler lar bunu dogru sekilde yapamıyor mu?


Bu mesaja 1 cevap geldi.
D
20 yıl
Yüzbaşı
Konu Sahibi

A
20 yıl
Binbaşı

evet bunu okumuştum ,sanırım bu derleyicilerin 32 bit olması ile alakalı ,işlemci bir adımda 32 işleyebildiği için galiba
yani işlemci diyor ki ben 32bit bardakla su içerim sen ister doldur ,ister yarım olsun farketmez



S
20 yıl
Yüzbaşı

quote:

Orjinalden alıntı: theDarkTemplar

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

bu arada dos işletim sistemleri için int 2 bayt değil mi



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.