Null pointer checks with `std::unique_ptr` and `std::shared_ptr`
Dynamic memory deallocation with `std::unique_ptr` and `std::shared_ptr`
Creating arrays with `std::unique_ptr` and `std::shared_ptr`
How to create and initialize a `std::shared_ptr` object
How to create and initialize a `std::unique_ptr` object