C standard to the rescue again! From 7.20.3p1:but if malloc were to allocate memory at an address that is to big for the pointer in question to hold then you'd get very weird results
This forces malloc() to return acceptable values.The pointer returned if the allocation succeeds is suitably aligned so that it may be assigned to a pointer to any type of object and then used to access such an object or an array of such objects in the space allocated