No, you should not "make a habit of doing it with the pointer".
Generally speaking, you should only use pointers and dynamic memory allocation if there is a specific need. If you cannot identify a particular need, then don't do it.
Yes, there are particular cases where using dynamic memory allocation (and deallocation) is appropriate. But doing that also comes with additional requirements, such as either the programmer REMEMBERING to release the object, or using specific techniques (e.g. a smart pointer rather than a raw pointer) to ensure it is properly released. There is no point in accepting the effort to meet those additional requirements unless you have a real need to start with.
Incidentally, operator delete
does not necessarily "free up memory". It causes a dynamically allocated object to no longer exist as far as your program is concerned. However, it does not necessarily cause your program to hand memory used back to, for example, the host operating system. Such things depend on details of host operating systems (e.g. how expensive is a request of the OS and its kernel mode drivers to allocate physical memory?) and details of your compiler and standard library and optimisation settings (e.g. how much is your compiler vendor willing to trade off additional memory usage of user programs versus runtime speed?)