NİŞANTAŞI ÜNİVERSİTESİ

Slides:



Advertisements
Benzer bir sunumlar
X86 Assembly Programlama Dilinde
Advertisements

Bilgisayar Bilimlerine Giriş-2
DİZİLER – I. Kısım YRD.DOÇ.DR. CİHAD DEMİRLİ
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Bölüm 12 ÜST DÜZEY KONULAR Dinamik Bellek Ayırma Önişlemci
Göstericiler (Pointers)
C PROGRAMLAMA DİLİNE GİRİŞ
Diziler.
Elektrik-Elektronik Mühendisliği Bölümü DİZİLER C Programlama Dili Yaz Stajı Cengiz TEPE SAMSUN 2007.
Elektrik-Elektronik Mühendisliği Bölümü
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Diziler(Arrays).
Nesneye Yönelik Programlama
Nesneye Dayalı Programlama
Nesneye Yönelik Programlama
Bilgisayar Programlama
SINIFLAR VE DİNAMİK BELLEK YÖNETİMİ
FONKSİYONLAR.
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
JAVA’DA DÖNGÜLER.
C PROGRAMLAMA DİZİLER (ARRAYS).
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
SINIFLAR VE DİNAMİK BELLEK YÖNETİMİ VE SINIFLARIN DİĞER ÖZELLİKLERİ Yılmaz Kılıçaslan.
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
Bilgisayar Programlama. Tek bir değişken tanımlamak için aşağıdaki gibi bir yazım yeterlidir. int i; Hatırlanacağı gibi bu tarz bir tanımlamada.
DİZİLER Arrays.
STRING‘LER Karakter Kütüphanesi Fonksiyonları
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Bugünkü konular Programlama dilleri ve Syntax Generic C Program yapısı
SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
Algoritmalar ve Programlama I Ders 10: ALTPROGRAM KAVRAMI ve FONKSİYON
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
VERİ ve BELLEK & DEĞİŞKENLERİN SAKLANMASI Asst.Prof.Dr.Misket YEKTAY Gizem AYIK.
Bölüm 2 C Dilinin Temelleri Genel Kavramlar Yazım ve Noktalama Kuralları C Kütüphaneleri C Dilindeki Sözcükler Değer Sabitleri Veri Tipleri Değişkenler.
Programlamaya Giriş-I Bölüm-1. Algoritma Algoritma günlük yaşamımızda yaptığımız işler sırasında sıklıkla kullandığımız bir yöntemdir. Algoritma, bir.
Fonksiyonlar ve Diziler
C Programlama Dili Bilgisayar Mühendisliği.
C Programlama Diline Giriş
NİŞANTAŞI ÜNİVERSİTESİ
ARDUİNO Arduino Eğitimleri Bölüm 3 Programlama Dili Temelleri
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
C ile Programlamaya Giriş
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

NİŞANTAŞI ÜNİVERSİTESİ Algoritma ve Programlama Dinamik Bellek Yönetimi NİŞANTAŞI ÜNİVERSİTESİ © Mühendislik Mimarlık Fakültesi mmf.nisantasi.edu.tr

Dinamik Bellek Yönetimi C dilinde bir dizi tanımlandığı zaman, bu dizi için derleyici tarafından bellekte yer ayrılır. Örneğin: int a[100]; Derleme sırasında yukarıdaki gibi bir dizi tanımlaması ile karşılaşan derleyici bellekte (eğer kullanılan sistemde int türü uzunluğunun 2 byte olduğu varsayılırsa) toplam 200 byte yer ayıracaktır. Programın çalışması sırasında bir dizinin uzunluğunu değiştirmek mümkün değildir. Diziler konusunda açıklandığı gibi, dizi tanımlama ifadelerinde dizi boyutunu gösteren ifade (köşeli parantezin içerisindeki ifade) sabit ifadesi olmalıdır, değişken içeremez. Çünkü derleyicinin bellekte yer ayırması için, dizi boyutunu bilmesi gerekir. Oysa pratikte birçok uygulamada açılması gereken dizinin boyutu programın çalışması sırasında (runtime) belirlenmektedir. NİŞANTAŞI ÜNİVERSİTESİ ©

Dinamik Bellek Yönetimi Programın çalışma zamanı sırasında belli büyüklükte ardışıl (contigous) bir bellek bölgesinin çalışan program tarafından ayrılmasına ve istenildiği zaman serbest bırakılmasına olanak sağlayan yöntemlere "dinamik bellek yönetimi" denir. C dilinde dinamik bellek yönetimi dinamik bellek fonksiyonlarıyla yapılmaktadır. Dinamik bellek yönetiminde kullanılan standart C fonksiyonları hakkında aşağıda detaylı bilgi verilmektedir. Şüphesiz bu fonksiyonların dışında, ticari derleyici paketlerinin kütüphanesinde, standart olmayan dinamik bellek fonksiyonları da bulunabilir. Ancak yazılan kaynak kodun taşınabilirliği açısından standart C fonksiyonları tercih edilmelidir. NİŞANTAŞI ÜNİVERSİTESİ ©

Dinamik Bellek Yönetimi malloc fonksiyonu malloc fonksiyonu programın çalışma zamanı sırasında bellekten dinamik bir blok elde etmek için kullanılır. Fonksiyonun stdlib.h başlık dosyası içindeki bildirimi aşağıdaki gibidir: void *malloc(size_t nbyte); size_t türünün derleyiciyi yazanların seçimine bağlı olarak unsigned int ya da unsigned long türlerinden birinin yeni tür ismi olarak tanımlanması gerektiğini, ve sistemlerin hemen hemen hepsinde size_t türünün unsigned int türü olduğunu hatırlayalım. Fonksiyona gönderilecek arguman ayrılmak istenen bloğun byte olarak uzunluğudur. Ayrılan alanın sürekli (contigious) olması garanti altına alınmıştır. malloc fonksiyonunun geri dönüş değeri elde edilen bellek bloğunun başlangıç adresidir. NİŞANTAŞI ÜNİVERSİTESİ ©

Dinamik Bellek Yönetimi Ayrılan Bloğun Serbest Bırakılması Dinamik bellek fonksiyonlarıyla elde edilen bir blok C'nin standart fonksiyonlarından free fonksiyonu kullanılarak sisteme geri verilebilir. free fonksiyonunun bildirimi de diğer dinamik bellek fonksiyonlarınınkiler gibi stdlib.h başlık dosyası içindedir: void free(const void *block); free fonksiyonuna gönderilecek olan arguman, daha önce malloc, calloc ya da realloc fonksiyonlarıyla elde edilmiş olan bellek bloğunun başlangıç adresidir. free fonksiyonu çağrısıyla bu blok heap alanına geri verilmiş olur. heap alanına geri verilen blok malloc, calloc ya da realloc fonksiyonları tarafından yeniden elde edilme potansiyeline girecektir. NİŞANTAŞI ÜNİVERSİTESİ ©

NİŞANTAŞI ÜNİVERSİTESİ © kaynaklar Brian W. Kernighan , Dennis M. Ritchie, (1988), C Programlama Dili – ANSI C, DAISYSCIENCE, Editor: Dr. Rifat Çölkesen . Necati Ergin, C Ders Notları, C ve Sistem Programcıları Derneği NİŞANTAŞI ÜNİVERSİTESİ ©