Did you read the documentation?
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?
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.