How do you define your branches? In some cases, if I recall correctly, the ownership of the object is not taken by the tree, so that you need to delete manually the pointer after processing.
See: root.cern.ch/doc/master/classTTree.html and search for "owner"
And also: Std vector pointer branch and memory leak