This statement is incorrect: "If you pass the BSTR to some OLE function, this will normally free the BSTRs memory when done with it."

The general rule to COM resource is, if you allocate it then...