Bildirim
void* calloc(size_t num, size_t size);
Açıklama
Her birinin boyutu byte olarak ifade edilen ve size parametre değeri kadar olan bellekten num parametre değeri kadar sayıda bellek bloğunu tahsis eder ve tahsis edilen belleğin tamamını sıfır değeri ile doldurur.
Tahsis edilen bellek bloğunun başlangıç adresini gösteren bir işaretçi geri döndürür.
Parametreler
num: Tahsis edilecek eleman sayısını gösterir.
size: Her bir elemanın byte olarak boyutunu gösterir.
Dönüş değeri
Başarı durumunda tahsis edilen belleğin başlangıç adresini geri döndürür. Bellek sorunlarını engellemek için, gerekli işlemler yapıldıktan sonra, bu işaretçi free() veya realloc() fonksiyonu ile boşaltılmalıdır.
Hata durumunda, NULL bir işaretçi geri döndürülür.
Örnek
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int *ip, id;
ip = (int *) calloc(10, sizeof(int));
for (id=0; id<10; id++) {
*(ip+id) = (id+1) * 5;
printf("%p adresindeki değer: %d\n", (ip+id), *(ip+id));
}
free(ip);
}
Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar:
00BC1540 adresindeki değer: 5 00BC1544 adresindeki değer: 10 00BC1548 adresindeki değer: 15 00BC154C adresindeki değer: 20 00BC1550 adresindeki değer: 25 00BC1554 adresindeki değer: 30 00BC1558 adresindeki değer: 35 00BC155C adresindeki değer: 40 00BC1560 adresindeki değer: 45 00BC1564 adresindeki değer: 50
Yukarıdaki program, calloc() fonksiyonunu kullanarak 10 adet int değer için bellek tahsisi yapar. Her bellek adresine int bir değer atar. Daha sonra, bellek adreslerini ve bu adreslere atadığı değerleri ekrana yazar.