CAllocatorInstance

This allows smart pointers to free object memory they are holding on to Passing the allocator itself to the free function allows allocation from multiple instances of an allocator and returning memory to the appropriate instance it was allocated from