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;