160484Sobrien/* calloc -- allocate memory which has been initialized to zero. 260484Sobrien This function is in the public domain. */ 389857Sobrien 489857Sobrien/* 589857Sobrien 689857Sobrien@deftypefn Supplemental void* calloc (size_t @var{nelem}, size_t @var{elsize}) 789857Sobrien 889857SobrienUses @code{malloc} to allocate storage for @var{nelem} objects of 989857Sobrien@var{elsize} bytes each, then zeros the memory. 1089857Sobrien 1189857Sobrien@end deftypefn 1289857Sobrien 1389857Sobrien*/ 1460484Sobrien 1560484Sobrien#include "ansidecl.h" 1660484Sobrien#include <stddef.h> 1760484Sobrien 1860484Sobrien/* For systems with larger pointers than ints, this must be declared. */ 19218822SdimPTR malloc (size_t); 20218822Sdimvoid bzero (PTR, size_t); 2160484Sobrien 2260484SobrienPTR 23218822Sdimcalloc (size_t nelem, size_t elsize) 2460484Sobrien{ 2560484Sobrien register PTR ptr; 2660484Sobrien 2760484Sobrien if (nelem == 0 || elsize == 0) 2860484Sobrien nelem = elsize = 1; 2960484Sobrien 3060484Sobrien ptr = malloc (nelem * elsize); 3160484Sobrien if (ptr) bzero (ptr, nelem * elsize); 3260484Sobrien 3360484Sobrien return ptr; 3460484Sobrien} 35