diff --git a/mex/sources/k_order_perturbation/k_ord_dynare.cc b/mex/sources/k_order_perturbation/k_ord_dynare.cc
index 46aafbb958803297eb6ef48af736104ec2d7801e..d932743028bb3ae9e856351b91f5dc2b03c62ee4 100644
--- a/mex/sources/k_order_perturbation/k_ord_dynare.cc
+++ b/mex/sources/k_order_perturbation/k_ord_dynare.cc
@@ -89,8 +89,10 @@ KordpDynare::evaluateSystem(Vector &out, const Vector &yym, const Vector &yy,
 void
 KordpDynare::calcDerivativesAtSteady() throw (DynareException)
 {
-  g1p = new TwoDMatrix(nY, nJcols);
-  g1p->zeros();
+  TwoDMatrix g1(nY, nJcols);
+  g1.zeros();
+
+  TwoDMatrix *g2p = NULL, *g3p = NULL;
 
   if (nOrder > 1)
     {
@@ -113,10 +115,9 @@ KordpDynare::calcDerivativesAtSteady() throw (DynareException)
   Vector llxSteady(nJcols-nExog);
   LLxSteady(ySteady, llxSteady);
 
-  dynamicModelFile->eval(llxSteady, xx, params, ySteady, out, g1p, g2p, g3p);
+  dynamicModelFile->eval(llxSteady, xx, params, ySteady, out, &g1, g2p, g3p);
 
-  populateDerivativesContainer(*g1p, 1, JacobianIndices);
-  delete g1p;
+  populateDerivativesContainer(g1, 1, JacobianIndices);
 
   if (nOrder > 1)
     {
diff --git a/mex/sources/k_order_perturbation/k_ord_dynare.hh b/mex/sources/k_order_perturbation/k_ord_dynare.hh
index 262fecf21159c7892ee640bdde12f1247c6a4723..3629c3d74ae40e12828f80b020d0c73ead8cc06f 100644
--- a/mex/sources/k_order_perturbation/k_ord_dynare.hh
+++ b/mex/sources/k_order_perturbation/k_ord_dynare.hh
@@ -113,10 +113,6 @@ class KordpDynare : public DynamicModel
   const TwoDMatrix &ll_Incidence;
   double qz_criterium;
   vector<int> JacobianIndices;
-
-  TwoDMatrix *g1p;
-  TwoDMatrix *g2p;
-  TwoDMatrix *g3p;
 public:
   KordpDynare(const vector<string> &endo, int num_endo,
               const vector<string> &exo, int num_exo, int num_par,