Это может вызвать их, если == 0 или == 2.
Если == 1, генерируется исключение и не выделяется память. Если> 2 памяти выделены и освобождены.
Если память == 0 должна быть выделена, так как new не может возвращать нулевые указатели. Вы должны освободить выделенную память с помощью delete [].
Если == 2 памяти выделена и функция возвращается. Это очевидная утечка.