Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

BM-104 Nesneye Yönelik Programlama Bahar 2013 (8. Sunu) (Yrd. Doç. Dr. Deniz Dal)

Benzer bir sunumlar


... konulu sunumlar: "BM-104 Nesneye Yönelik Programlama Bahar 2013 (8. Sunu) (Yrd. Doç. Dr. Deniz Dal)"— Sunum transkripti:

1 BM-104 Nesneye Yönelik Programlama Bahar 2013 (8. Sunu) (Yrd. Doç. Dr. Deniz Dal)

2 new ve delete Operatörleriyle Dinamik Bellek Yönetimi (Dynamic Memory Management) Dinamik bellek yönetimi programcıya, bellekten dinamik olarak yer ayırmak (allocate) ve kullandıktan sonra ayrılan bu alanı belleğe geri vermek (deallocate) için yardımcı olur. (Hem built-in hem de user-defined veri tipleri için.) Bu işlemler new ve delete operatörleri yardımıyla gerçekleştirilir. Bellekte dinamik olarak (boyutu değişken), bir dizi oluşturmak boyutu sabit bir diziyi statik olarak tanımlamaktan birçok kez daha kullanışlıdır.

3 Dinamik Bellek Yönetimi (devam) new Operatörü  Bir sınıfın nesnesi için programın çalışması esnasında (execution time) (derleme anında (compilation time) değil) nesnenin boyutuna uygun bir alanı bellekte rezerve eder.  Nesnenin yapıcısını çağırır ve ilk değer atama işlemini gerçekleştirir.  Ve son olarak bu nesneye bir pointer atar. Free store ya da heap  Dinamik olarak oluşturulacak nesneler için programın çalıştırılması esnasında kullanılan özel bellek alanıdır.

4 Dinamik Bellek Yönetimi (devam) delete Operatörü  Dinamik olarak heap te oluşturulmuş bir nesneyi yok eder.  Bu işlemi nesnenin yıkıcısını çağırarak gerçekleştirir ve boşalan alanı heap e iade eder.  Belleğin boşaltılan bu alanı başka nesneler tarafından ya da işletim sistemi tarafından yeniden kullanılabilir.  Dinamik olarak oluşturulmuş bir bellek alanını kullanımı bittikten sonra serbest bırakmamak “memory leak” denen bir probleme sebep olur. Neden?

5 Dinamik Değişken ve Nesne Kullanımı Örnek : double *ptr1=new double( ); int *ptr2=new int; *ptr2=16; Zaman *ptr3=new Zaman; Zaman *ptr4=new Zaman(12,45,16); delete ptr1; delete ptr2; delete ptr3; delete ptr4; delete operatörü ptr1 pointerının işaret ettiği dinamik bellek alanını yok eder. Pointer değişkenine bu satırdan sonra da new operatörü ile yeni bir dinamik bellek alanı rezerve edilebilir.

6 Tek Boyutlu Dinamik Diziler Diziler dinamik olarak çalışma esnasında tanımlanabilirler.  Örnek: Dinamik olarak oluşturulacak ve kullanıcıdan klavye yoluyla temin edilecek diziBoyutu kadar elemanı saklayacak integer bir dizinin deklarasyonu: 1.int *diziPtr=new int[diziBoyutu]; 2.delete [] diziPtr; (!! Kare parantezlere dikkat ( [] )!!) 2 nolu deyim diziPtr adlı dinamik dizinin bellekte tutulduğu alanı istenildiğinde serbest bırakır. Eğer pointer, içinde nesne tutan bir diziyi işaret ediyorsa önce dizinin içindeki nesnelere ait yıkıcılar çağrılır ve daha sonra bellek serbest bırakılır. diziPtr dinamik dizinin ilk elemanını işaret eder. Dizinin ikinci elemanına diziPtr[1] ile veya *(diziPtr+1) ile ulaşılır.

7 Dinamik Olarak Oluşturulmuş Bir Nesnenin Public Üye Fonksiyonlarına Veya Public Üye Değişkenlerine Ulaşmak İçin 2 Yol Vardır Zaman *ptr=new Zaman; BİRİNCİ YOL: ptr->ZamaniGoster(); İKİNCİ YOL:(*ptr).ZamaniGoster();

8 Uygulama  Kullanıcıdan klavye yoluyla temin edeceğiniz integer bir sayıyı dinamik bir integer dizinin boyutu olarak kullanınız.  Bu dizinin içerisini rastgele sayılarla dolduracak Fonksiyon1 adında bir C++ fonksiyonu tanımlayınız.  Kendisine parametre olarak aldığı bir tamsayı Leyland Sayısı ise geriye true değilse geriye false döndüren Fonksiyon2 adında bir C++ fonksiyonu tanımlayınız. 1 < y ≤ x iken x y + y x formunda ifade edilebilen sayılar Leyland Sayıları olarak adlandırılırlar. 8, 17, 100 ve 1124 Leyland Sayılarından birkaçıdır.  Kendisine parametre olarak aldığı bir alt limit ile bir üst limit arasındaki Leyland Sayılarını alt alta basacak Fonksiyon3 adında bir C++ fonksiyonu tanımlayınız.  Dinamik bir integer dizinin içerisindeki Leyland Sayılarını bularak ekrana basacak Fonksiyon4 adında bir C++ fonksiyonu tanımlayınız.

9

10

11

12

13

14 İki Boyutlu Dinamik Diziler

15


"BM-104 Nesneye Yönelik Programlama Bahar 2013 (8. Sunu) (Yrd. Doç. Dr. Deniz Dal)" indir ppt

Benzer bir sunumlar


Google Reklamları