[ROOT] Why "//->" without "+"?

From: George Irwin (gmieg@EGNEXT1.SLAC.STANFORD.EDU)
Date: Wed Jun 27 2001 - 03:56:27 MEST


Hi,  We are seeing a memory leak in old code which used to
work.  The leak goes away when I add "//->" as in Event.h.
The ROOT documentation, and the Event.h example, suggests
that "//->" should now be used to flag the declarations of
pointers-to-TClonesArrays which the user guarantees to be
valid pointers to static objects.  This is to prevent the
automatic streamer from creating a new TClonesArray when each
new event is read.  The user manual and roottalk item 2004 says
that "//->" is only needed when the user has turned on automatic
streamers with a "+" affixed to the end of the pragma statement
of the LinkDef.h file.  But we are finding that we need the
"//->" for TClonesArrays declared in classes without "+".
Even classes with manual streamers ("-" instead of "+") need
"//->" to prevent multiple instantiations.  So my question is
whether it is normal to be getting automatic streamer behavior
without the "+".  An auxiliary question is whether "+" will
someday become the default so that users do not need to put
it on the pragma line.  Perhaps we are seeing such default
behavior already.  I am using the ROOT CVS head release
on RedHat Linux 6.2 with egcs.1.1.2.  Thanks.  George



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:50 MET