Home | History | Annotate | Download | only in libiberty
      1 /* calloc -- allocate memory which has been initialized to zero.
      2    This function is in the public domain. */
      3 
      4 /*
      5 
      6 @deftypefn Supplemental void* calloc (size_t @var{nelem}, size_t @var{elsize})
      7 
      8 Uses @code{malloc} to allocate storage for @var{nelem} objects of
      9 @var{elsize} bytes each, then zeros the memory.
     10 
     11 @end deftypefn
     12 
     13 */
     14 
     15 #include "ansidecl.h"
     16 #include <stddef.h>
     17 
     18 /* For systems with larger pointers than ints, this must be declared.  */
     19 PTR malloc (size_t);
     20 void bzero (PTR, size_t);
     21 
     22 PTR
     23 calloc (size_t nelem, size_t elsize)
     24 {
     25   register PTR ptr;
     26 
     27   if (nelem == 0 || elsize == 0)
     28     nelem = elsize = 1;
     29 
     30   ptr = malloc (nelem * elsize);
     31   if (ptr) bzero (ptr, nelem * elsize);
     32 
     33   return ptr;
     34 }
     35