That's the part I missed : the first null check can be skipped if the memory is allocated but the constructor hasn't been executed.