From d38f2121de22d9ed75e19145d17b098b2b0d63e7 Mon Sep 17 00:00:00 2001 From: Anna Wellmann <a.wellmann@tu-bs.de> Date: Thu, 30 Mar 2023 09:17:10 +0000 Subject: [PATCH] Fix some memory leaks in DistributionHelper --- src/gpu/GridGenerator/grid/Grid.h | 2 +- src/gpu/GridGenerator/grid/GridImp.cpp | 3 ++- src/gpu/GridGenerator/grid/GridImp.h | 2 +- src/gpu/GridGenerator/grid/distributions/Distribution.cpp | 4 ++-- src/gpu/GridGenerator/grid/distributions/Distribution.h | 4 ++-- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/gpu/GridGenerator/grid/Grid.h b/src/gpu/GridGenerator/grid/Grid.h index db8b883ee..b77d3de8c 100644 --- a/src/gpu/GridGenerator/grid/Grid.h +++ b/src/gpu/GridGenerator/grid/Grid.h @@ -101,7 +101,7 @@ public: virtual uint *getFC_offset() const = 0; virtual real *getDistribution() const = 0; - virtual int* getDirection() const = 0; + virtual const std::vector<int> &getDirection() const = 0; virtual int getStartDirection() const = 0; virtual int getEndDirection() const = 0; diff --git a/src/gpu/GridGenerator/grid/GridImp.cpp b/src/gpu/GridGenerator/grid/GridImp.cpp index 3ca142750..cec996774 100644 --- a/src/gpu/GridGenerator/grid/GridImp.cpp +++ b/src/gpu/GridGenerator/grid/GridImp.cpp @@ -36,6 +36,7 @@ #include <sstream> # include <algorithm> #include <cmath> +#include <vector> #include "global.h" @@ -1762,7 +1763,7 @@ real* GridImp::getDistribution() const return this->distribution.f; } -int* GridImp::getDirection() const +const std::vector<int>& GridImp::getDirection() const { return this->distribution.dirs; } diff --git a/src/gpu/GridGenerator/grid/GridImp.h b/src/gpu/GridGenerator/grid/GridImp.h index b88e99448..54ea74850 100644 --- a/src/gpu/GridGenerator/grid/GridImp.h +++ b/src/gpu/GridGenerator/grid/GridImp.h @@ -243,7 +243,7 @@ public: uint getSparseSize() const override; int getSparseIndex(uint matrixIndex) const override; real* getDistribution() const override; - int* getDirection() const override; + const std::vector<int>& getDirection() const override; int getStartDirection() const override; int getEndDirection() const override; diff --git a/src/gpu/GridGenerator/grid/distributions/Distribution.cpp b/src/gpu/GridGenerator/grid/distributions/Distribution.cpp index a6e11ac90..31d2e2f8a 100644 --- a/src/gpu/GridGenerator/grid/distributions/Distribution.cpp +++ b/src/gpu/GridGenerator/grid/distributions/Distribution.cpp @@ -46,9 +46,9 @@ Distribution DistributionHelper::getDistribution27() d27.dir_start = STARTDIR; d27.dir_end = ENDDIR; - d27.dirs = new int[(ENDDIR + 1) * DIMENSION]; + d27.dirs.resize((ENDDIR + 1) * DIMENSION); - d27.directions = new Direction[ENDDIR + 1]; + d27.directions.resize(ENDDIR + 1); d27.directions[DIR_P00] = Direction(DIR_27_E_X, DIR_27_E_Y, DIR_27_E_Z); d27.directions[DIR_M00] = Direction(DIR_27_W_X, DIR_27_W_Y, DIR_27_W_Z); d27.directions[DIR_0P0] = Direction(DIR_27_N_X, DIR_27_N_Y, DIR_27_N_Z); diff --git a/src/gpu/GridGenerator/grid/distributions/Distribution.h b/src/gpu/GridGenerator/grid/distributions/Distribution.h index 7982abc23..39cea3747 100644 --- a/src/gpu/GridGenerator/grid/distributions/Distribution.h +++ b/src/gpu/GridGenerator/grid/distributions/Distribution.h @@ -73,8 +73,8 @@ struct Distribution typedef const Direction* const_iterator; real* f; - int *dirs; - Direction* directions; + std::vector<int> dirs; + std::vector<Direction> directions; int dir_start; int dir_end; const char* name; -- GitLab