Is realloc allowed to return null? If so, does the block stay allocated like in C?