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