Re: [ROOT] Deletion of TGraph

From: cstrato (cstrato@aon.at)
Date: Mon Dec 02 2002 - 22:19:39 MET


Dear Rene

Thank you, does this mean that in the following code
fragment, graph will be deleted by TPad?
  TGraph *graph = 0;
  for (Int_t i=0; i<m; i++) {
    graph = new TGraph(n, x, y);
    graph->SetBit(kCanDelete);
    graph->Draw(opt);
  }

Best regards
Christian




Rene Brun wrote:

> 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