Compiler creating constructor code which involves operators new and delete too in case if your constructor code throws an exception. So, using new automatically creates usage of delete.
In 2nd example compiler knows you using default constructor which never throws(my guess)..
Different compilers work different ways cus they are different (captain) and have different optimization capabilities and tricks to create code