Commit | Line | Data |
---|---|---|
e2eaf477 ILT |
1 | /* calloc -- allocate memory which has been initialized to zero. |
2 | This function is in the public domain. */ | |
39423523 DD |
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 | */ | |
e2eaf477 | 14 | |
252b5132 | 15 | #include "ansidecl.h" |
252b5132 RH |
16 | #ifdef ANSI_PROTOTYPES |
17 | #include <stddef.h> | |
18 | #else | |
19 | #define size_t unsigned long | |
20 | #endif | |
21 | ||
22 | /* For systems with larger pointers than ints, this must be declared. */ | |
23 | PTR malloc PARAMS ((size_t)); | |
1ea16ec5 | 24 | void bzero PARAMS ((PTR, size_t)); |
252b5132 RH |
25 | |
26 | PTR | |
27 | calloc (nelem, elsize) | |
28 | size_t nelem, elsize; | |
29 | { | |
30 | register PTR ptr; | |
31 | ||
32 | if (nelem == 0 || elsize == 0) | |
33 | nelem = elsize = 1; | |
34 | ||
35 | ptr = malloc (nelem * elsize); | |
36 | if (ptr) bzero (ptr, nelem * elsize); | |
37 | ||
38 | return ptr; | |
39 | } |