Kayıtlar

malloc etiketine sahip yayınlar gösteriliyor

30 : Struct Tipinde Pointer

Bir struct değişkeni pointer olarak da tutulabilir. Bir önceki yazıda bir öğrenci bilgisi tutmayı görmüştük. Şimdi aynı kodda struct tipinde pointer kullanarak tekrar yazalım. #include <stdio.h> #include <string.h> typedef struct ogrenci { char ad[50]; char soyad[50]; int numara; float not; }ogrenci; int main() { ogrenci *ogrenci1 = malloc (sizeof(struct ogrenci)); ogrenci *ogrenci2 = malloc (sizeof(struct ogrenci)); if (ogrenci1 == NULL || ogrenci2 == NULL) { printf("Ogrenciler olusturulamadi \n"); return 0; } strcpy(ogrenci1->ad, "ad1"); strcpy(ogrenci1->soyad, "soyad1"); ogrenci1->numara = 55; ogrenci1->not = 3.5; strcpy(ogrenci2->ad, "ad2"); strcpy(ogrenci2->soyad, "soyad2"); ogrenci2->numara = 77; ogrenci2->not = 1.2; printf("Ogrenci 1 adi : %s \n", ogrenci1->ad); printf(...

28 : CPP Dilinde new Operatörü ile Dinamik Dizi Oluşturma

cpp dilinde dinamik bellek kullanımı c diline göre daha kolay. Bir önceki örnekte c dilinde malloc yada calloc kullanarak bir dizi oluşturup rastgele sayılar atamıştık. Bunu cpp dilinde yapmak istersek new operatörü kullanabiliriz. new operatörü sadece dizi değil struct, class gibi birimleri de yaratmada kullanılabilir. Bu tiplerle örnekler yaptığımızda new operatörünün nasıl kullanıldığını da inceleyeceğiz. Yine aynı şekilde bir dizi üretip rastgele sayılar atayıp bastıracağız. Sadece kaç adet sayı olacağını kullanıcıdan isteyeceğiz. dinamiknew.cpp #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int i, num; int *data; time_t t; printf("Kac adet sayi olusturulsun: "); scanf("%d", &num); data = new int[num]; if(data == NULL) { printf("Hata!! Bellek yetersiz \n"); exit(0); } srand((unsigned) time(&t)); for(i = 0; i < num; ++i) { ...

27 : Dinamik Bellek Kullanımı

Daha önce diziler konusunda diziler kullanılırken bir sınır belirtmek gerektiğini söylemiştik. Örneğin kullanıcıdan sayı girmesi istenilecekse olabilecek bir maximum değer öngörülüp dizi tanımlanırken bu değer kullanılır. #define MAX 1024 int dizi[MAX]; Buna alternatif olarak belleği dinamik olarak da ayırıp kullanabiliriz. Program çalışırken bellekten belli bir bölüm ilgili iş için kullanılıp daha sonra boşaltılabilir. Burada dikkat edilmesi gereken kullanacağımız belleğin gerçekten ayrılmış olmasını kontrol etmek ve kullandıktan sonra gerekiyorsa ilgili alanı boşaltmak. Kontrol etmediğimiz takdirde belleğin ayrılamaması durumunda programın sonlanması; boşaltmamamız durumunda ise "memory leak" denilen belleğin tükenmesi sorunuyla karşılaşırız. Nasıl kullanıldığını görmek için bir örnekle kullanıcıdan bir miktar girmesini isteyip bu miktarda rastgele sayı oluşturup yazdıralım. dinamik.c #include <stdio.h> #include <stdlib.h> #include <time.h> int...