Allocates memory for a given number of elements of a given size (that is, BC * A bytes total), then fills it with zeros.
Size of element
Number of elements
Error code (on failure)
First byte of allocated and zeroed memory (on success)
Set on success, reset on failure
Reallocates a block of memory at a different size and returns a new pointer.
Block to resize
Preserved if success, error code if failure
Reset on failure, set on success
This function may have to move the memory that you've allocated. Consider the old pointer invalid and use the one returned from realloc instead.