Slab allocators: consistent ZERO_SIZE_PTR support and NULL result semantics