I am updating a previous post.
I looked into the source code for TCanvas and TGraph and a lot of objects are
instantiated in the heap there. It seems that the problem is that the ROOT
people can't figure out how to keep a picture on the screen after a script is
finished, and at the same time, properly destroying all those objects
afterwards. Is this an ongoing issue that it's going to be corrected or do I
have to learn to live with it? It's not a lot of trouble restarting ROOT every
once in a while anyway. But this seriously handicaps ROOT as a library for
standalone, compiled, interactive, applications.
My previous post was:
After enabling gObjectTable->Print() and executing the commands below in win2k
ROOT 3.02 I expected to obtain the same results after the second and fourth
ObjectTable->Print() (see below) but this is not the case.
Is this a memory leak or am I overlooking something?
The "leak" persists even if I omit the Draw and GetXaxis statements. If I use
Update() and Modified() more objects are "leaked".
I also tried putting gr1 and c1 in the stack (getting rid of delete statmts),
and gObjectTable->Print gives the same results.
Repeated calls keep accumulating objects so sooner or later, ROOT crashes.
Thanks in advance for any response.
---------------------------------------------------------------------------
(starting a fresh ROOT session)
gObjectTable->Print(); // first
gObjectTable->Print(); // second
gROOT->Reset();
Double_t t[10];
Double_t p[10];
TCanvas *c1 = new TCanvas("plot","Plotting");
TGraph *gr1 = new TGraph(10,t,p);
gr1->SetBit(kCanDelete);
gr1->Draw("AL");
gr1->GetXaxis()->SetTimeDisplay(1);
gr1->GetXaxis()->SetTimeFormat("%H:%M");
delete gr1;
delete c1;
gROOT->Reset();
gObjectTable->Print(); // third
gObjectTable->Print(); // fourth
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:53 MET