There are two major downsides of it -
new does not guarantee that the memory you are allocating is initialized with 0s or null. They will have undefined values unless you initialize them.
Secondly, the memory is dynamically allocated, which means it is hosted in heap not in stack. The difference between heap and stack is that, stacks are cleared when the variable runs out of scope but heaps are not cleared automatically and also C++ does not contain a built in Garbage Collector, which means if any how the delete call is missed you are ended up with a memory leak.