I understand that shared pointers work by counting references and releasing the object the pointer is pointing to. But the shared pointer takes space itself, is it released somehow? is there a pool of shared pointers and they are reused? is this something easy to track in the library source code?.