what is a shared_ptr
shared_ptr is now part of the C++11 Standard, as std::shared_ptr. Starting with Boost release 1.53, shared_ptr can be used to hold a pointer to a dynamically allocated array. This is accomplished by using an array type (T[] or T[N]) as the template parameter.