calloc
0'a öğelerle bir dizide bellek ayırır.
void *calloc(
size_t num,
size_t size
);
Parametreler
num
Öğe sayısı.size
Her öğenin bayt cinsinden uzunluğu.
Dönüş Değeri
callocayrılan alan için bir işaretçi döndürür.Dönüş değerine göre sıralanmasını depolama alanı herhangi bir nesne türünü depolanması için yeterince hizalı sağlanır.Bir işaretçi dışında bir tür almak için void, dönüş değerini artığını türü kullanın.
Notlar
calloc İşlevi dizisi için depolama alanı ayırır num öğeleri, her birinin uzunluğu size bayt.Her öğe 0 olarak başlatılır.
callocayarlar errno için ENOMEM bir bellek ayırma başarısız olursa veya bellek miktarını aşarsa isteniyorsa _HEAP_MAXREQ.Bu ve diğer hata kodları hakkında daha fazla bilgi için bkz: errno, _doserrno, _sys_errlist, and _sys_nerr.
callocÇağrı malloc C++ kullanmak için _set_new_mode yeni işleyicisi modunu ayarlamak için işlevi.Yeni işleyicisi modu gösterir mi, başarısızlık, malloc tarafından belirlenen yeni işleyici yordamı çağırmak için ise _set_new_handler.Varsayılan olarak, malloc yeni bir işleyici yordamı bellek ayırma hatası çağırmaz.Bu varsayılan davranışı geçersiz kılmak böylece, calloc bellek ayırma işlemi malloc aynı şekilde yeni bir işleyici yordamı çağırır bu yolla new operatörü mü aynı nedenle başarısız olduğunda.Varsayılan geçersiz kılmak için çağrı
_set_new_mode(1)
program veya bağlantı newmode ile erken.OBJ (see Bağlantı Seçenekleri).
Uygulama hata ayıklama sürümü c çalışma zamanı kitaplıkları ile bağlandığında calloc çözümler _calloc_dbg.Yığın hata ayıklama işlemi sırasında nasıl yönetildiği hakkında daha fazla bilgi için Hata ayıklama crt öbek.
callocişaretlenmiş __declspec(noalias) ve __declspec(restrict), işlev genel değişkenleri değiştirmek için garantili ve işaretçiyi verdiğini başka ad verilmiş değil.Daha fazla bilgi için bkz: noalias ve kısıtlamak.
Gereksinimler
Yordamı |
Gerekli başlık |
---|---|
calloc |
<stdlib.h> ve <malloc.h> |
Ek uyumluluk bilgileri için bkz: Uyumluluk giriş.
Örnek
// crt_calloc.c
// This program uses calloc to allocate space for
// 40 long integers. It initializes each element to zero.
#include <stdio.h>
#include <malloc.h>
int main( void )
{
long *buffer;
buffer = (long *)calloc( 40, sizeof( long ) );
if( buffer != NULL )
printf( "Allocated 40 long integers\n" );
else
printf( "Can't allocate memory\n" );
free( buffer );
}
.NET Framework Eşdeğeri
Yoktur. Standart c işlevi çağırmak için kullanmak PInvoke. Daha fazla bilgi için bkz: Platform Çağırma örnekleri.