Solved

my TCppWebBrowser is leaking memory

Posted on 2002-05-02
4
454 Views
Last Modified: 2012-05-04
Hi,
I'm using the TCppWebBrowser in Borland C++ Builder
and I have a problem.

I load new stuff into the browser with this code:

TMemoryStream *stm1 = new TMemoryStream();
AnsiString tmpBasic = readFile("rightStartPage");

char *str = tmpBasic.c_str();
stm1->Write(str,StrLen(str)+1);
IPersistStreamInit *psi;
stm1->Seek(0,0);
TStreamAdapter *sa = new TStreamAdapter(stm1,soReference);
SUCCEEDED(CppWebBrowser1->Document->QueryInterface(IID_IPersistStreamInit,(void **)&psi));

psi->Load(*sa);
delete stm1;


And the program grows every time I load new stuff into
the browser. I dont know how to avoid that.

Does anyone know what I should do to avoid memoryleakage??
0
Comment
Question by:nfredrikn
  • 3
4 Comments
 
LVL 3

Expert Comment

by:Crius
Comment Utility
Well, for one, you are doing a QueryInterface() for psi.
You need to do a psi->Release() because of that. You also need to do it on every variable you got with QueryInterface...
0
 
LVL 3

Accepted Solution

by:
Crius earned 300 total points
Comment Utility
A worse problem is I don't see where you are deleting sa. Every variable you allocate memory for using new must be deallocated with delete... somewhere...
0
 

Author Comment

by:nfredrikn
Comment Utility
Thanks,
but the reason I dont delete "sa" is because the
program crashes when I try to. Do you know what to
do about that?
0
 
LVL 3

Expert Comment

by:Crius
Comment Utility
It might have something to do with the stm1 stream still being attached.

I don't know anything about TStreamAdapter, but since you called new on it, somewhere, somewhen, you will have to call delete on it, or suffer memory loss and old age...
0

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

C++ Properties One feature missing from standard C++ that you will find in many other Object Oriented Programming languages is something called a Property (http://www.experts-exchange.com/Programming/Languages/CPP/A_3912-Object-Properties-in-C.ht…
Container Orchestration platforms empower organizations to scale their apps at an exceptional rate. This is the reason numerous innovation-driven companies are moving apps to an appropriated datacenter wide platform that empowers them to scale at a …
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now