diff --git a/StrategyBase/src/CMap.cpp b/StrategyBase/src/CMap.cpp
index c1d92cdf30cd28dff04fa2a633ec7553427a1ccb..0d13d600aa524b54aa5bc66ac86666efd6497253 100644
--- a/StrategyBase/src/CMap.cpp
+++ b/StrategyBase/src/CMap.cpp
@@ -23,7 +23,19 @@ CMap::CMap(const SMap* map)
 			cells[i]->neighbors[j] = cells[map->cells[i].neighbors[j]->infos.id];
 		}
 	}
+}
+
+CMap::~CMap()
+{
+	for (auto& cell : cells) {
+		delete(cell);
+	}
 
+	for (auto& region_pair : regions) {
+		for (auto& region : region_pair.second) {
+			delete(region);
+		}
+	}
 }
 
 
@@ -32,7 +44,7 @@ void CMap::FindConnexComponent(int idPlayer)
 	int* MarkedCells = new int[nbCells];
 	for (unsigned int i = 0; i < nbCells; i++) MarkedCells[i] = 0;
 
-	std::vector<Region*> vec_regions = *new(std::vector<Region*>); //Vecteur de composantes connexes
+	std::vector<Region*> vec_regions; //Vecteur de composantes connexes
 
 	for (unsigned int i = 0; i < nbCells; i++) {
 		if (cells[i]->owner == idPlayer && MarkedCells[i] == 0) {
@@ -57,6 +69,7 @@ void CMap::FindConnexComponent(int idPlayer)
 		}
 	}
 	regions[idPlayer] = vec_regions;
+	delete[](MarkedCells);
 }
 
 std::pair<std::vector<Cell*>, int> CMap::DijkstraAlgo(Cell* cell_depart, Cell* cell_arrivee)
diff --git a/StrategyBase/src/CMap.h b/StrategyBase/src/CMap.h
index f9100207683fcbfd6d908e9eb70e4f5e65b0c9e3..8d8378766764556770aa1289dd50f458afcd2860 100644
--- a/StrategyBase/src/CMap.h
+++ b/StrategyBase/src/CMap.h
@@ -18,7 +18,7 @@ public:
 
 	//CMap()=delete;
 	CMap(const SMap*);
-	~CMap()=default;
+	~CMap();
 	CMap(const CMap&) = delete;
 	CMap(CMap&&) = default;
 	CMap& operator=(const CMap&) = delete;