diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 7a7ece38c59b4c2b218bd01773b65d00cb8acb44..ab9bd7a34098d3a7c449e7dc6912d5dbf5ca8343 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -295,6 +295,7 @@ int main(int argc, char *argv[]) {
         LoopSolver<VectorType> solver(&nonlinearGSStep, solver_maxIterations,
                                       solver_tolerance, &energyNorm, verbosity);
         solver.solve();
+        delete myBlockProblem;
       }
 
       u1 += u1_diff;
@@ -346,7 +347,6 @@ int main(int argc, char *argv[]) {
                                             *myGlobalNonlinearity, b4, u4_diff);
         auto myBlockProblem = new MyBlockProblemType(parset, myConvexProblem);
         auto nonlinearSmoother = new NonlinearSmootherType;
-
         auto multigridStep =
             new TNNMGStepType(*linearIterationStep, *nonlinearSmoother);
         multigridStep->setProblem(u4_diff, *myBlockProblem);
@@ -363,6 +363,10 @@ int main(int argc, char *argv[]) {
             multigridStep, solver_maxIterations, solver_tolerance, energyNorm,
             verbosity);
         overallSolver.solve();
+        delete myBlockProblem;
+        delete nonlinearSmoother;
+        delete multigridStep;
+        delete energyNorm;
       }
 
       u4 += u4_diff;