Hi, I'm running an application which builds a large tree. It shows signs of memory leaks so I started running it with memory checking turned on . The first ( and largest ) item in the leak.info file is as follows : Leaked allocations: 151 Leaked size: 608077 operator new[](unsigned) (newdelete/src/NewDelete.cxx:333). 333 return ::operator new(size); TBasket::WriteBuffer() (tree/src/TBasket.cxx:487). 487 fBuffer = new char[buflen]; TBranch::Fill() (tree/src/TBranch.cxx:487). 487 Int_t nout = basket->WriteBuffer(); // Write buffer TBranchElement::Fill() (tree/src/TBranchElement.cxx:923). 923 if (!TestBit(kDoNotProcess)) nbytes += TBranch::Fill(); TBranchElement::Fill() (tree/src/TBranchElement.cxx:920). 920 if (!branch->TestBit(kDoNotProcess)) nbytes += branch->Fill(); TTree::Fill() (tree/src/TTree.cxx:2249). 2249 nbytes += branch->Fill(); main (FillTree.cxx:1523). 1523 sno->Fill(); Am I correct in interpreting this as 151 instances of a leak of .6 Mb ? I looked at the code in TBasket::WriteBuffer() . I don't understand a lot of it but two things struck me : fBuffer is never deleted and fBuffer appears to be re-assigned inside the loop. I'm using version 4.00.08 peter ---- Peter Skensved Email : peter@SNO.Phy.QueensU.CA Dept. of Physics, Queen's University, Kingston, Ontario, Canada
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:09 MET