Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Přidělí pole v paměti s prvky inicializovanými na 0.
Syntaxe
void *calloc(
size_t number,
size_t size
);
Parametry
number
Počet prvků
size
Délka v bajtech každého prvku
Vrácená hodnota
calloc vrátí ukazatel na přidělený prostor. Prostor úložiště, na který odkazuje návratová hodnota, je vhodně zarovnán pro uložení libovolného typu objektu. Pokud chcete získat ukazatel na jiný typ než void, použijte přetypování typu na návratovou hodnotu.
Poznámky
Funkce calloc přiděluje prostor úložiště pro pole number prvků, každý bajt délky size . Každý prvek je inicializován na hodnotu 0.
calloc nastaví errno , ENOMEM pokud přidělení paměti selže nebo pokud požadovaná velikost paměti překročí _HEAP_MAXREQ. Informace o těchto a dalších kódech chyb naleznete v tématu , , , a_sys_nerr . _sys_errlist_doserrnoerrno
V implementaci Microsoftu, pokud number nebo size je nula, calloc vrátí ukazatel na přidělený blok nenulové velikosti. Pokus o čtení nebo zápis vráceným ukazatelem vede k nedefinované chování.
calloc používá funkci C++ _set_new_mode k nastavení nového režimu obslužné rutiny. Nový režim obslužné rutiny označuje, zda při selhání calloc je volání nové rutiny obslužné rutiny nastavena ._set_new_handler Ve výchozím nastavení nevolá rutinu nové obslužné rutiny při calloc selhání přidělení paměti. Toto výchozí chování můžete přepsat tak, aby při calloc selhání přidělení paměti volaly novou rutinu obslužné rutiny stejným způsobem jako new operátor, když selže z stejného důvodu. Pokud chcete přepsat výchozí nastavení, zavolejte
_set_new_mode(1);
v rané fázi programu nebo s odkazem NEWMODE.OBJ (viz možnosti odkazu).
Pokud je aplikace propojena s ladicí verzí knihoven runtime jazyka C, calloc přeloží na _calloc_dbg. Další informace o správě haldy během procesu ladění naleznete v části Haldy ladění CRT.
calloc je označen a __declspec(noalias) __declspec(restrict), což znamená, že funkce zaručuje, že nebude upravovat globální proměnné a že vrácený ukazatel není aliasován. Další informace najdete v tématech noalias a restrict.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Požadavky
| Rutina | Požadovaný hlavičkový soubor |
|---|---|
calloc |
<stdlib.h> a <malloc.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// 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