From 53cb9effdd93f92180d4f99475a8629892811be3 Mon Sep 17 00:00:00 2001
From: "le.truong" <le.truong@telecom-paris.fr>
Date: Fri, 20 Nov 2020 18:07:42 +0100
Subject: [PATCH] Fix memory leak problem

---
 simulators/c++2/src_simulator/app/TMLTask.cpp       | 2 ++
 simulators/c++2/src_simulator/sim/SimComponents.cpp | 7 +++++++
 2 files changed, 9 insertions(+)

diff --git a/simulators/c++2/src_simulator/app/TMLTask.cpp b/simulators/c++2/src_simulator/app/TMLTask.cpp
index 92196ad762..a2361081f3 100755
--- a/simulators/c++2/src_simulator/app/TMLTask.cpp
+++ b/simulators/c++2/src_simulator/app/TMLTask.cpp
@@ -78,6 +78,8 @@ TMLTask::~TMLTask(){
 	}
 #endif
 	if (_comment!=0) delete [] _comment;
+	if(_cpus != 0) delete[] _cpus; // free the allocation of cpu array
+	if(_fpgas != 0) delete[] _fpgas; // free the allocation of fpga array
 }
 
 std::string TMLTask::toShortString() const{
diff --git a/simulators/c++2/src_simulator/sim/SimComponents.cpp b/simulators/c++2/src_simulator/sim/SimComponents.cpp
index 948b32b0af..8ebc16f1a1 100644
--- a/simulators/c++2/src_simulator/sim/SimComponents.cpp
+++ b/simulators/c++2/src_simulator/sim/SimComponents.cpp
@@ -71,9 +71,16 @@ SimComponents::~SimComponents(){
 	for(SerializableList::iterator i=_serList.begin(); i != _serList.end(); ++i){
 		delete (*i);
 	}
+
 	for(SlaveList::iterator i=_slList.begin(); i != _slList.end(); ++i){
 		delete (*i);
 	}
+
+    for(TaskList::const_iterator i=_taskList.begin(); i != _taskList.end(); ++i){
+        //free tasks before terminate simulator
+        delete (*i);
+    }
+
 #ifdef EBRDD_ENABLED
 	for(EBRDDList::iterator i=_ebrddList.begin(); i != _ebrddList.end(); ++i){
 		delete (*i);
-- 
GitLab