Update: f_memory tweaks, always call memset() on new allocations.
This is already done with reallocations.
Be consistent and also do this for allocations.
The size parameters represent the size of the memory structure, which should always be non-zero and positive.
The length parameter, on the other hand, is just the amount of time the structure is to be allocation, which should always be non-negative.
The length parameter, therefore, can be 0 and if it is then do nothing (this relaxes the parameter restrictions).