А в IDL-е строка обьявлена как LPOLESTR* или как BSTR*?
Если первое — обьяви, как второе.
Первая строка освобождается через CoTaskMemFree, вторая через SysFreeString, которая, фактически отнимает от указателя sizeof(int) и вызывает CoTaskMemFree
... << RSDN@Home 1.1.4 beta 4 rev. 303>>