With
new
you allocate a piece of memory from the heap you get a pointer to that memory. That implies that you are responsible for deleting that memory some time later.
The syntax
Point x2;
allocates a piece of memory on the stack and refer to it with the x2 variable. When your function returns the memory will automatically be freed. (And hence you should never return the address of such a stack object!).
Allocation on the stack is faster than allocation on the heap. However the size of the stack is usually much smaller than the memory of the heap. Hence you should allocate huge chunks of memory from the heap.