The pointer returned must be suitably aligned for use with any data type.
When asked to allocate zero bytes, malloc may either always return NULL, or may return distinct non-null pointers that do not point to any storage.
While malloc may at its option allocate more than size bytes to fill a request, code that calls malloc may not depend on such behavior and must not perform any accesses outside of the bounds defined by size.
It is legitimate for memory returned by malloc to not actually be physically mapped until it is used.