| Summary: | Memory leak caused by G4StackingMessenger | ||
|---|---|---|---|
| Product: | Geant4 | Reporter: | Matthew <mbuchove> |
| Component: | event | Assignee: | asai |
| Status: | RESOLVED FIXED | ||
| Severity: | minor | ||
| Priority: | P5 | ||
| Version: | other | ||
| Hardware: | All | ||
| OS: | All | ||
Thanks for reporting this. The problem will be fixed at the next patch release. Kind regards, Makoto |
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.