Your assessment is basically correct - n = 2 will cause a memory leak, n = 0 will theoretically lead to a memory leak - n = 1 will throw an exception (therefore, a new int is never executed), so there is no memory leak.
Any value for n> 2 will NOT cause a memory leak.
Now, if n <0 - you have undefined behavior - and you can get a memory leak (this negative int can be converted to a large positive unsigned value), and bad things can happen.
source share