Главная страница | назад





Article #17790: StringToOleStr () is causing a huge memory leak

 Question and Answer Database
FAQ2790C.txt StringToOleStr () is causing a huge memory leak
Category :ActiveX
Platform :Win95/NT
Product : Applies to all
Question:
My code looks as follows:
...
String str;
int i = 0;
while (i < 100){
str = "Pass #" + String(i);
BSTR bsStr = StringToOleStr (str);
...
}
...
This loop causes a HUGE memory leak. I tryed deleting the BSTR but that did not
help any. When I comment out the line BSTR bsStr = StringToOleStr (str); the
memory leak goes away, so I know that it has something to do with the BSTR, but I
don't know what.
Answer:
Well, you are right that the problem is that you are not freeing the memory allocated
by the call to StringToOleStr. But the problem is that BSTR's use system memory
so delete will not free them up. You need to use the API call
SystemFreeString (BSTR bstr) to free up the memory.
8/4/98 9:19:26 AM

Last Modified: 01-SEP-99