Regardless of whether you initialize COM or not, dropping the calls in Release will cause the objects to remain on the server side, it is possible that the entire server was without a reason (if it does not work as a service). In other words, you will have a memory leak on the server side, which can only be fixed by restarting the COM server.
I remember asking similar questions when I first started using COM. The client I was working on used many threads, and I tried to reuse the interfaces for the different tasks that each thread performed. This made managing the interface cache difficult. In the end, there were no shortcuts. If you are not using MTA, GIT, or interface marshaling, the thread that created the interface should also release it.
To simplify the task, try using CComPtr to control the interfaces you create. As with regular pointers, using a smart pointer can sometimes make your life much easier.
source share