Use C++11 feature std::shared_ptr for better memory management between C++ and Python. Also use std::unique_ptr when appropriate for holding pointers that are never shared.