The short answer, I'm sure someone will write a longer one, but:
new gives you an rvalue pointer: new int = nullptr; unable to compile with error about the need for lvalue.
The dereferencing of this pointer gives you lvalue: *(new int) = 5; will compile (this naive statement is also a memory leak, because the pointer is lost, of course).
The copy constructor accepts the link, so if you have a pointer to an object, you need to dereference it.
If you lose the pointer, you cannot delete it, so it will not be destroyed and the heap memory will not be freed (until the program exits and the memory is returned to the OS).
If you place the pointer on some other object that can take it upon itself, for example, shared_ptr , then you will not lose the pointer. Another object will delete it in accordance with its semantics, at the latest when the other object (or the latter in case of sharing, for example, with shared_ptr ) itself destroys it.
hyde source share