calloc
```c
void *calloc(size_t nmemb, size_t size);
```
결과적으로 할당되는 크기는 ``c nmemb * size`` bytes다.
어차피 0으로 초기화 할거면, ``c malloc() + memset()`` 보다 ``c calloc()``을 사용하는게 더 빠르다.
kernel이 memory를 제공하기 전에 zero로 만들고 제공할 수 있기 때문.
malloc wrapper
```c
/* like malloc(), but terminates on failure */
void * xmalloc(size_t size){
void *p;
p = malloc(size);
if (!p) {
perror("xmalloc");
exit(EXIT_FAILURE);
}
return p;
}
```