Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

c niye malloc/new kullanmalıyım ?


Öne çıkan mesajlar

Mesaj tarihi:
acemiyim bu diller konusunda resmen. incelediğim bazı program source kodlarında bazı şeyleri tanımlarken malloc veya new kullanıyorlar. ayrıca tanımladıkları şeye memset(..0..) gibi şeyler de dikkatimi çekti. sebebi nedir bunların ? yani normal tanımlama zaten bunların yerini karşılamaz mı ? normal int x; tanımıyla malloc/new x'in farkı nedir ?
Mesaj tarihi:
malloc genelde dinamik zamanda yeni alan istemek icin kullanilir.
mesela sen koda int x; dediginde complier anlar ve sana x icin int'lik bir yer ayirir zaten.

amma velakin diyelim ki isim alcaksin char* ile, ve arrayin uzunlugu adamin isminin uzunlugu kadar olsun istiyorsun. Bu ancak kod calistiktan sonra yapilabilecek bir hesap oldugundan malloc kullanmak guzel olur.

(char*)malloc(sizeof(char[])); dedigin zaman sana adamin adi atiyorum senko ise 6chardan olusan bir yer acar sadece.
Mesaj tarihi:
Dinamik olarak bellekten yer ayırmak için. malloc/calloc yalnızca verdiğin boyut için yer ayırıp adresini döndürür, new ise nesneyi ilkler (instantiate). OOP'a yabancı değilsen, new operatörünü çağırdığında classın constructor'unu da çağırır diye düşünebilirsin. C/C++'ta kendiliğinden garbage collection olmadığı için ayırdığın yeri nesneyle işin bittiğinde boşaltman da gerekir. malloc/calloc ile ayırdıysan free(), new ile ayırdıysan delete veya delete[] kullanırsın.

malloc mesela nerde kullanılır dersen, şöyle olabilir. Elinde bi fonksiyon vardır, buna gelen bi x parametresi vardır ve bu fonksiyonun çalışma esnasında x genişliğinde bi dizi yaratması gerekir. ANSI C'de bi dizinin genişliğini dinamik olarak belirleyemezsin, yani aşağıdaki gibi bi kullanım olamaz:

void fonk(int x)
{
int arr[x];
...
}

Onun yerine şöyle yaparsın:

void fonk(int x)
{
int arr* = (int*)calloc(x, sizeof(int));
...
}


Edit: Oha lan bi topiği açıp 15dk beklemek, sonra yazıp göndermek :(
Mesaj tarihi:
C'de new mi var :p

Malloc kullanmalisin cunku malloc kullanarak dynamic memory'nin guzelliklerinden yararlaniyorsun. Ustteki mesajlarda da cok guzelce aciklamislar zaten.

Eger cs okuyorsan, data structures dersinde oturur neden gerekli oldugu.
×
×
  • Yeni Oluştur...