Endorfin35+

Kayıtsız Üye
Katılım
1 Mayıs 2020
Mesajlar
4,217
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.
 

Forum istatistikleri

Konular
6,015
Mesajlar
102,640
Üyeler
2,528
Son üye
Dede

Son kaynaklar

Son profil mesajları

deneyci wrote on hakan8470's profile.
Sibonge uNkulunkulu ngokuhlukahluka asinike kona.

Bu hangi dil? :)
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?
gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
Back
Top