Adds a usage count to a block of memory. For each count added, an additional release must be used. This can be used to keep a copy of the block, even if some other code automatically releases it.
Allocate a block of memory, and release it properly. But we passed it to some function. That function wanted to keep a copy of the block, so it can apply a hold. It needs to later do a Release again to actually free the memory.