From 1cdd40bfc3a001acb209e6c48464d93287eccb8d Mon Sep 17 00:00:00 2001 From: Jason Chemin <jchemin@machinesan> Date: Fri, 12 Jun 2020 17:06:59 +0200 Subject: [PATCH] [Fix] add destructor to avoid memory leak. --- include/hpp/centroidal-dynamics/centroidal_dynamics.hh | 2 ++ include/hpp/centroidal-dynamics/solver_LP_abstract.hh | 2 ++ include/hpp/centroidal-dynamics/solver_LP_qpoases.hh | 2 ++ src/centroidal_dynamics.cpp | 4 ++++ 4 files changed, 10 insertions(+) diff --git a/include/hpp/centroidal-dynamics/centroidal_dynamics.hh b/include/hpp/centroidal-dynamics/centroidal_dynamics.hh index dec7805..46729c1 100644 --- a/include/hpp/centroidal-dynamics/centroidal_dynamics.hh +++ b/include/hpp/centroidal-dynamics/centroidal_dynamics.hh @@ -97,6 +97,8 @@ class CENTROIDAL_DYNAMICS_DLLAPI Equilibrium { Equilibrium(const Equilibrium& other); + ~Equilibrium(); + /** * @brief Returns the useWarmStart flag. * @return True if the LP solver is allowed to use warm start, false otherwise. diff --git a/include/hpp/centroidal-dynamics/solver_LP_abstract.hh b/include/hpp/centroidal-dynamics/solver_LP_abstract.hh index 11b1f49..85226c4 100644 --- a/include/hpp/centroidal-dynamics/solver_LP_abstract.hh +++ b/include/hpp/centroidal-dynamics/solver_LP_abstract.hh @@ -51,6 +51,8 @@ class CENTROIDAL_DYNAMICS_DLLAPI Solver_LP_abstract { m_useWarmStart = true; } + virtual ~Solver_LP_abstract() {} + /** * @brief Create a new LP solver of the specified type. * @param solverType Type of LP solver. diff --git a/include/hpp/centroidal-dynamics/solver_LP_qpoases.hh b/include/hpp/centroidal-dynamics/solver_LP_qpoases.hh index 67284f1..d292c41 100644 --- a/include/hpp/centroidal-dynamics/solver_LP_qpoases.hh +++ b/include/hpp/centroidal-dynamics/solver_LP_qpoases.hh @@ -25,6 +25,8 @@ class CENTROIDAL_DYNAMICS_DLLAPI Solver_LP_qpoases : public Solver_LP_abstract { public: Solver_LP_qpoases(); + virtual ~Solver_LP_qpoases() {} + /** Solve the linear program * minimize c' x * subject to Alb <= A x <= Aub diff --git a/src/centroidal_dynamics.cpp b/src/centroidal_dynamics.cpp index 3c5428b..9f08107 100644 --- a/src/centroidal_dynamics.cpp +++ b/src/centroidal_dynamics.cpp @@ -72,6 +72,10 @@ Equilibrium::Equilibrium(const string& name, const double mass, const unsigned i m_D.block<3, 3>(3, 0) = crossMatrix(-m_mass * m_gravity); } +Equilibrium::~Equilibrium(){ + delete m_solver; +} + bool Equilibrium::computeGenerators(Cref_matrixX3 contactPoints, Cref_matrixX3 contactNormals, double frictionCoefficient, const bool perturbate) { long int c = contactPoints.rows(); -- GitLab