Commit | Line | Data |
---|---|---|
18a0be3d BJ |
1 | /* @(#)calloc.c 4.1 (Berkeley) %G% */ |
2 | /* calloc - allocate and clear memory block | |
3 | */ | |
4 | #define CHARPERINT (sizeof(int)/sizeof(char)) | |
5 | #define NULL 0 | |
6 | ||
7 | char * | |
8 | calloc(num, size) | |
9 | unsigned num, size; | |
10 | { | |
11 | register char *mp; | |
12 | char *malloc(); | |
13 | register int *q; | |
14 | register m; | |
15 | ||
16 | num *= size; | |
17 | mp = malloc(num); | |
18 | if(mp == NULL) | |
19 | return(NULL); | |
20 | q = (int *) mp; | |
21 | m = (num+CHARPERINT-1)/CHARPERINT; | |
22 | while(--m>=0) | |
23 | *q++ = 0; | |
24 | return(mp); | |
25 | } | |
26 | ||
27 | cfree(p, num, size) | |
28 | char *p; | |
29 | unsigned num, size; | |
30 | { | |
31 | free(p); | |
32 | } |