[ROOT] Memory leak reading TClonesArray from a tree

From: Yuri Kharlov (Yuri.Kharlov@in2p3.fr)
Date: Tue Aug 13 2002 - 12:15:50 MEST


Hi,

I am reading a tree from the root file. One branch of this tree has
TClonesArray of objects inherited from TObject. When I read this array by the
script attached, I observe that the number of my objects in the memory
increases, they are not deleted. The root file which I tested with this
script is /afs/cern.ch/user/k/kharlov/public/AliRoot/galice.root.

I use root 3.03.06 and gcc 3.1. The root-file was created by AliRoot package
(exp. ALICE).

Yuri Kharlov
IHEP (Protvino) / Subatech-IN2P3 (Nantes)

>


#if !defined(__CINT__)
#include "TObjectTable.h"
#include "TClonesArray.h"
#include "TTree.h"
#include "TBranch.h"
#include "TFile.h"
#endif


void ReadHits()
{
  TFile* f = new TFile("galice.root","read");
  TTree   * hitstree;
  TBranch * hitsbranch;
  char treeName[20];
  TClonesArray * hits = new TClonesArray("AliPHOSHit",1) ;
  for (Int_t iev=0; iev<10; iev++) {
    sprintf(treeName,"TreeH\%d",iev);
    hitstree = (TTree*)f->Get(treeName);
    if (hitstree) {
      hitsbranch = hitstree->GetBranch("PHOS");
      hitsbranch ->SetAddress(&hits);
      hitsbranch ->GetEntry(0);
      printf("Hits arrays contains %d entries\n",hits->GetEntries());
      hits->Clear();
    } else {
      printf("Tree %s does not exist\n",treeName);
    }
    gObjectTable->Print();
  }
}



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