diff --git a/cpp/field.cpp b/cpp/field.cpp
index 3ee9f2995dd1cbc2dea28abdc3d1b675d2cc6031..7d3f0afee6dcf5b8dc0f7aa8bece40aa88a54444 100644
--- a/cpp/field.cpp
+++ b/cpp/field.cpp
@@ -861,16 +861,20 @@ void field<rnumber, be, fc>::compute_rspace_xincrement_stats(
                 const hid_t group,
                 const std::string dset_name,
                 const hsize_t toffset,
-                const std::vector<double> max_estimate)
+                const std::vector<double> max_estimate,
+                field<rnumber, be, fc> *tmp_field)
 {
     TIMEZONE("field::compute_rspace_xincrement_stats");
     assert(this->real_space_representation);
     assert(fc == ONE || fc == THREE);
-    field<rnumber, be, fc> *tmp_field = new field<rnumber, be, fc>(
-            this->rlayout->sizes[2],
-            this->rlayout->sizes[1],
-            this->rlayout->sizes[0],
-            this->rlayout->comm);
+    bool own_field = false;
+    own_field = (tmp_field == NULL);
+    if (own_field)
+        tmp_field = new field<rnumber, be, fc>(
+                this->rlayout->sizes[2],
+                this->rlayout->sizes[1],
+                this->rlayout->sizes[0],
+                this->rlayout->comm);
     tmp_field->real_space_representation = true;
     this->RLOOP_simd(
                 [&](const ptrdiff_t rindex,
@@ -890,7 +894,8 @@ void field<rnumber, be, fc>::compute_rspace_xincrement_stats(
             dset_name,
             toffset,
             max_estimate);
-    delete tmp_field;
+    if (own_field)
+        delete tmp_field;
 }
 
 
diff --git a/cpp/field.hpp b/cpp/field.hpp
index 0364e8d527a9f4ae8b6c30b7026b10c5245b1038..f352be510fbbf4f980cef7c5c60446b666834d8d 100644
--- a/cpp/field.hpp
+++ b/cpp/field.hpp
@@ -129,7 +129,8 @@ class field
                 const hid_t group,
                 const std::string dset_name,
                 const hsize_t toffset,
-                const std::vector<double> max_estimate);
+                const std::vector<double> max_estimate,
+                field<rnumber, be, fc> *tmp_field = NULL);
 
         void compute_rspace_stats(
                 const hid_t group,