Aracılığıyla paylaş


calloc

0'a başlatılan öğelerle bellekte bir dizi ayırır.

Sözdizimi

void *calloc(
   size_t number,
   size_t size
);

Parametreler

number
Öğe sayısı.

size
Her öğenin bayt cinsinden uzunluğu.

Dönüş değeri

calloc ayrılan alana bir işaretçi döndürür. Dönüş değerinin işaret ettiği depolama alanı, herhangi bir nesne türünün depolaması için uygun şekilde hizalanır. dışında voidbir türe işaretçi almak için dönüş değerinde tür tür ataması kullanın.

Açıklamalar

calloc işlevi, her biri uzunluk size baytları olan number bir öğe dizisi için depolama alanı ayırır. Her öğe 0 olarak başlatılır.

callocENOMEM, bellek ayırmanın başarısız olup olmadığını veya istenen bellek miktarının aşılıp aşılmadığını _HEAP_MAXREQolarak ayarlarerrno. Bu ve diğer hata kodları hakkında bilgi için bkz. errno, _doserrno, _sys_errlistve _sys_nerr.

Microsoft uygulamasında sıfır ise veya size sıfır isenumber, calloc sıfır olmayan boyutta ayrılmış bir bloğun işaretçisini döndürür. Döndürülen işaretçiyi okuma veya yazma girişimi tanımsız davranışa yol açar.

callocyeni işleyici modunu ayarlamak için C++ _set_new_mode işlevini kullanır. Yeni işleyici modu, hata calloc durumunda tarafından _set_new_handlerayarlanan yeni işleyici yordamının çağrılıp çağrılmayacağını belirtir. Varsayılan olarak, calloc bellek ayırma hatasında yeni işleyici yordamını çağırmaz. Bu varsayılan davranışı calloc geçersiz kılarak bellek ayıramazsa yeni işleyici yordamını işlecin aynı nedenden dolayı başarısız olduğu gibi new çağırmasını sağlayabilirsiniz. Varsayılanı geçersiz kılmak için

_set_new_mode(1);

veya ile NEWMODE.OBJ bağlantı oluşturun (bkz . Bağlantı seçenekleri).

Uygulama C çalışma zamanı kitaplıklarının hata ayıklama sürümüyle bağlandığında, calloc olarak _calloc_dbgçözümlenir. Yığın hata ayıklama işlemi sırasında nasıl yönetilir hakkında daha fazla bilgi için bkz . CRT hata ayıklama yığını.

callocve __declspec(restrict)olarak işaretlenir__declspec(noalias), başka bir deyişle işlevin genel değişkenleri değiştirmemesi garanti edilir ve döndürülen işaretçinin diğer adla işaretlenmediği anlamına gelir. Daha fazla bilgi için bkz. noalias ve restrict.

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Gereksinimler

Yordam Gerekli başlık
calloc <stdlib.h> ve <malloc.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Ö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 );
}
Allocated 40 long integers

Ayrıca bkz.

Bellek ayırma
free
malloc
realloc