Re: [ROOT] Deletion of TGraph

From: Rene Brun (Rene.Brun@cern.ch)
Date: Mon Dec 02 2002 - 15:17:51 MET


Hi Christian,

I suggest to read the chapter on "Object Ownership", page 107
of the ROOT Users Guide.

When you do
       graph->DrawGraph(n, x, y, opt);
DrawGraph creates a copy of the graph and sets its bit kCanDelete.
When clearing the pad, objects with the kCanDelete bit set are
automatically deleted. In your case, I suggest to do:
      TGraph graph; //will be automatically delete when leaving scope
      for (Int_t i=0; i<m; i++) {
         graph.DrawGraph(n, x, y, opt); //newgraph=new TGraph()
      }

Rene Brun


On Sat, 30 Nov 2002, cstrato wrote:

> Dear Rooters
> 
> In the following code, no graph is drawn if I delete graph:
>     TGraph *graph = 0;
>     for (Int_t i=0; i<m; i++) {
>        graph = new TGraph(n, x, y);
>        graph->Draw(opt);
>        SafeDelete(graph);  //<== not possible
>     }
> 
> However, in this code I can delete graph because DrawGraph
> creates a new graph "newgraph":
>     TGraph *graph = 0;
>     for (Int_t i=0; i<m; i++) {
>        graph = new TGraph(n, index, x);
>        graph->DrawGraph(n, x, y, opt); //newgraph=new TGraph()
>        SafeDelete(graph);
>     }
> 
> I understand that root takes care of deleting TGraph objects,
> but is this also the case when I create a standalone program
> or does there exist a memory leak?
> 
> 
> Thank you in advance for your help.
> 
> Best regards
> Christian
> _._._._._._._._._._._._._._._._
> C.h.i.s.t.i.a.n S.t.r.a.t.o.w.a
> V.i.e.n.n.a       A.u.s.t.r.i.a
> _._._._._._._._._._._._._._._._
> 
> 



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:22 MET