While the question is FinalRelease , I assume your question is related to ATL.
In most cases, you can clean things in either of two. FinalRelease will be called immediately before the actual destructor. The important difference is that if you combine other objects, FinalRelease gives you the opportunity to clear the links and release the dependencies before the actual destructor of the top-level class object class (esp. CComObject ) starts working.
That is, you clear things in two stages, first refer to aggregated objects in FinalRelease , and then to other things in FinalRelease or the destructor.
source share