Did you read the documentation?
Quote:
The storage space pointed to by the return value is guaranteed to be suitably aligned for storage of any type of object.
One must presume that this applies to a contiguous array, not so?
Quote:
calloc calls malloc
'Nuff said?

Casting the return of malloc is necessary in C++ because of stronger typing constraints. However, malloc should not be used in C++, so the question is (should be) moot.

In C, the void pointer is intrinsically convertible. Casting in C may actually hide potential errors if future changes to code (pointer types) are not made completely and thoroughly.