Anahtar fark: 'Calloc' ve 'Malloc', C programlama dilinde dinamik bellek tahsisinin performansını ifade eder. Bir 'calloc' ayrılan hafızayı sıfır ile başlatır, oysa 'malloc' değildir.
Hem 'calloc' hem de 'malloc' standart kütüphane fonksiyonlarıdır.
Sözdizimi aşağıdaki gibidir:
void * calloc (number_of_blocks, size_of_each_block_in_bytes);
Burada 'void', herhangi bir değer döndürmeyen genel bir C işlevidir. İlk argümandaki öğe sayısı, bir argümanın bayt cinsinden boyutunu ikinci argümana belirtir. Adres başarılı bölümlemeden sonra döndürülür, aksi takdirde fonksiyonun herhangi bir başarısızlığında NULL döndürülür.
Sözdizimi aşağıdaki gibidir:
void * malloc (size_in_bytes);
Özellikle, adresi genel bir şekilde döndürür (geçersiz *). Eğer 'malloc' hafızayı tahsis edemezse, -1 döndürür, aksi takdirde hafızanın tahsis edildiği adresi döndürür. Tahsis edilen hafıza, void adresini int * olarak yazarak bir tamsayı biçiminde olabilir; Tahsis edilen hafıza, sadece float * ile aynı boşluklu adresi yazarak, float şeklinde de olabilir.
Calloc ve Malloc arasındaki karşılaştırma:
calloc | Malloc | |
Temel fonksiyonlar | Kütüphane işlevi, her biri “boyut” baytının “n elemanlarını” tutacak büyüklükte bir bölge ayırır. | Kütüphane işlevi sadece “boyut” bayt hafızasını tahsis eder. |
Başlatma | Hafıza içeriğini sıfıra başlatır. | Bellek içeriğini sıfıra başlatmaz. |
Argüman sayısı | Burada iki argüman var. | Burada sadece bir argüman var. |
Tahsis edilen değerler | Tahsis edilen bölge sıfıra başlatılır. | Tahsis edilen hafızanın içeriği değişmez, yani hafıza öngörülemeyen veya çöp değerleri içerir, bu risk oluşturur. |
Değeri döndürür | boşluk işaretçisi (boşluk *). Başarılı bir tahsisattan sonra, bellek bloğuna bir işaretçi döndürülür. | boşluk işaretçisi (boşluk *). Başarılı bir tahsisattan sonra, bellek bloğuna bir işaretçi döndürülür. |