I don't have a lot of programming experience, but you could use new to reserve dynamicly memory for a Findresults object. You put your object in the allocated memory, after you've done it you can cal delete.

I don't know why you should use Release via COM.

Something like this:
CFindResults FindRslt = new CFindResult;
FindRslt = Map.GetObjectsFromPoint(x,y);

Than when you don't need it anymore, do:
delete FindRslt;

But doing:
CFindResults FindRslt = Map.GetObjectsFromPoint(x,y);
You can't use the delete key, so you should do this by Release(), but if that is not possible, than you've to solve the problem like our friend Wilfried said. The minimize/maximize thing. Maybe it's ugly to the users, but you could prompt message that mappoint is freeing memory and than will continue.

I hope I don't say stupid things, but that is what it came up in my mind. And I just try to help, like others help me