Smart Pointers

Server internally handles smart pointers. A smart pointer is similar to an ordinary pointer except that it implicitly destroys an object which is no longer referenced by a smart pointer. This means that when you use smart pointers, you do not have to explicitly call the C++ delete function to get rid of an object and reclaim memory. In fact, you should never call explicitly the C++ delete function. The risk of memory leaks is thus greatly reduced. Similarly, when you define a smart pointer to an object, you can be certain that this object will not be destroyed as long as it is referenced by the smart pointer.