Smart Pointers:
Issues with raw pointers
Types of smart pointers
Multiple Inheritance
Pointers are frequently used to handle dynamic memory allocation
It is up to the developers to make sure that there are no memory leaks
Problems can arise when the program's execution does not work as expected