malloc
malloc returns a void pointer to the allocated space,
or NULL if there is insufficient memory available.
To return a pointer to a type other than void, use a type cast on the return value.
The storage space pointed to by the return value is guaranteed to be suitably aligned for storage of any type of object.
If size is 0, malloc allocates a zero-length item in the heap and returns a valid pointer to that item.
Always check the return from malloc, even if the amount of memory requested is small.
calloc
The calloc function allocates storage space for an array of num elements,
each of length size bytes. Each element is initialized to 0.