G4StackingMessenger's destructor does not delete all of the objects that are created in the constructor. The one that is left out is verboseCmd. G4StackingMessenger::G4StackingMessenger(G4StackManager * fCont) :fContainer(fCont) { ... verboseCmd = new G4UIcmdWithAnInteger("/event/stack/verbose",this); ... } G4StackingMessenger::~G4StackingMessenger() { delete statusCmd; delete clearCmd; delete stackDir; //need to add: //delete verboseCmd; } This causes the following memory leak (output from Valgrind) ==9625== 584 (108 direct, 476 indirect) bytes in 1 blocks are definitely lost in loss record 275 of 280 ==9625== at 0x402641D: operator new(unsigned int) (vg_replace_malloc.c:255) ==9625== by 0x462171E: G4StackingMessenger::G4StackingMessenger(G4StackManager*) (G4StackingMessenger.cc:60) ==9625== by 0x462073F: G4StackManager::G4StackManager() (G4StackManager.cc:43) ==9625== by 0x45F3890: G4EventManager::G4EventManager() (G4EventManager.cc:64) ==9625== by 0x45BFD71: G4RunManagerKernel::G4RunManagerKernel() (G4RunManagerKernel.cc:102) ==9625== by 0x45B9E20: G4RunManager::G4RunManager() (G4RunManager.cc:85) Adding the line: delete verboseCmd; to the destructor will fix this issue.
Thanks for reporting this. The problem will be fixed at the next patch release. Kind regards, Makoto