<p>In a world where manual memory allocation and pointers still rule (Borland Delphi) I need a general solution for what I think is a general problem:</p>

<p>At a given moment an object can be referenced from multiple places (lists, other objects, ...). Is there a good way to keep track of all these references so that I can update them when the object is destroyed?
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­</p>

I can't quite figure out why you'd want to do this. Surely you would just check a reference in not Nil before using it?
Anwyays, two possible solutions I would consider are:
Have objects manager their own reference counts.
Create a reference counting manager class.
I would probably add AddRef() and ReleaseRef() functions to either the manager or the reference-aware class. You can then use these to check how many references exist at any point. COM does it this way.
The reference-aware class would manage only it's own reference count. The manager could use a Map to associate pointers with an integer for counting.