Rene Brun wrote: > Hi David, > > In order to organize the branches, ROOT has to build a detailed dictionary > for all the classes involved (top level classes, but also all referenced > classes). To build the dictionary, one has to build an instance of a class > and invoke the class ShowMembers function. > If the pointer specified to TTree::Branch is not null, ROOT will use > the corresponding object to build the dictionary, otherwise it will call > the class default constructor and will return the created object > at the pointer address. You can use this object if you like or delete it. If I delete the object constructed by TTree::Branch, I obtain a segmentation violation. I use root 3.02/07 . A very simplified script which violates segmentation is : #include "TFile.h" #include "TTree.h" #include "TLine.h" void demo() { TFile file("dummy.root","recreate") ; TTree tree("dummy","dummy") ; TLine * line = 0 ; tree.Branch("lines","TLine",&line) ; delete line ; } I use a TLine just for the demonstration, but I have also tried other classes which crash also. Perhaps I am doing an obvious error in the script above ? I am also interested to know if there is a way to get back the hand when the root interpreter has encountered a "segmentation violation" and displayed the usual " busy flag cleared " (control C has no effect). Thanks. David C.
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:41 MET