Could you elaborate on these tools?
In C++ you use handle classes. See the article about this in the C/C++ Articles section.
In C you would write a function to create a count on the heap. Then you would make a copy of the pointer (like a function call), you boos this count and when a copy disappers to delete this count. If the count is zero, you free the pointer.
In C++ this is automatic. In C this is a manual operation and just one slip and the count is off. This is very hard to to in C and is always unrelaible.
Issues also occur with multi-threading where the pointers are copied on separate threads. More code in C but in C++ critical sections can be used in the handle class where the counts are bieng adjusted.