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 ?


Artariel

Öne çıkan mesajlar

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 ?
Link to comment
Sosyal ağlarda paylaş

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.
Link to comment
Sosyal ağlarda paylaş

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 :(
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...