Endorfin35+

Kayıtsız Üye
Katılım
1 Mayıs 2020
Mesajlar
4,236
Vakit buldukça sindire sindire öğrenme faaliyetlerime devam ediyorum.

Değişkenleri inceler iken şu bilgiye ulaştım;

"Değişken tanımlayıcıları


C, aşağıda gösterilen 7 kelimeyi değişken adlarından önce tanımlayarak size değişkenleri farklı şekilde kullanma olanağı sağlar.


. auto
. extern
. register
. static
. const
. volatile
. restrict (C99)"

Kaynak : https://www.bilgigunlugum.net/prog/cprog/2c_degisken#c_degisken07


Benim sadece const tanımlayıcısının varlığından haberim vardı... Diğer tanımlayıcılar açıklanmış ama öylesine örneklenmiş. Gerçekte ne işe yarar hiçbir fikrim yok. Şimdi sorum şu bunlardan karşıma çıkacak olan, üzerinde durmam gerekenler hangileri?
 
Bunlardan sadece extern, static, ve const yaygın kullanılıyor. Diğerleri derleyicinin daha iyi optimizasyon yapması için, veya yapmaması için yönergeler veriyor.
 
Peki bir sorum daha var...

Seneryo 1 :

Global değişken tanımladım ve iki fonksiyon içinde kullandım...

Seneryo 2 :

Aynı değişkeni ilk fonksiyon içinde lokal tanımladım ve diğer fonksiyona argüman olarak gönderdim....

---

İki durumda da yapmak istediğim işlemi yaptım. Peki hafıza kullanımı açısından bir fark var mı? Global değişken baştan ram de yer kaplıyor ve sabit kalır iken local değişken ihtiyaç olduğunda rem kullanım sonra o alanı boşa mı çıkartıyor?

Aklıma takılan diğer bir konu ise local yada global değişken kullanımının program hafızası yönünden bir etkisi var mıdır?
 
Global olarak tanımlanan değişkenler, program çalışırken daha fazla hafıza kullanmasına sebep olur. Lokal değişkenler stack üzerinde yer alır ve programın hafıza kullanımını etkilemez.

Modern MMU (memory management unit) içeren işlemcilerde, her çalışan uygulama programına ayrılan stack miktarı, işletim sistemi tarafından otomatik olarak ve ihtiyacak göre artırılıp azaltılır, programı yazanın bu işlere kafa yormasına gerek yok. Aynı şekilde istediğin hafızayı programın kullanımı için talep edebilirsin ve işletim sistemi de bu miktarı tahsis eder. Ama kernel mode aygıt sürücüleri için (device driver) işler çok farklı. Hem stack miktarı son derece kısıtlı hem de driver'in kullanımı için hafıza talep ederken değişik değişik türler arasında uygun olanını seçmen gerekiyor ve bu talebin karşılanamama durumu da olabiliyor.
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
6,145
Mesajlar
104,885
Üyeler
2,554
Son üye
alisummer

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top