Base class for reference-counted objects that stay around until the last owner releases them. After the object's been created, every other owner who wants to keep it around must call Retain() to get shared custody, and Release() when they're OK with it going away. If you need to return an object of this type and don't need to keep it around yourself, use Autorelease() to hand it over to the current CAutoreleasePool, which will release it if nobody retains it by the time it goes out of scope. Or use a CRefCountedObjectRef.
Utility function for debugging. Returns a human-memorizable name for a pointer.