]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Make sure we call 'free()' instead of 'delete[]'.
authorWolfgang Bangerth <bangerth@colostate.edu>
Fri, 20 Oct 2017 16:52:44 +0000 (10:52 -0600)
committerWolfgang Bangerth <bangerth@colostate.edu>
Fri, 20 Oct 2017 16:52:44 +0000 (10:52 -0600)
include/deal.II/lac/la_parallel_vector.h
include/deal.II/lac/la_parallel_vector.templates.h

index 798820126177a82be1d5b8c66d112822c47bd30f..08721841e101cfc1bed304e2650ce7963d2610bd 100644 (file)
@@ -1082,8 +1082,12 @@ namespace LinearAlgebra
 
       /**
        * Pointer to the array of local elements of this vector.
+       *
+       * Because we allocate these arrays via Utilities::System::posix_memalign,
+       * we need to use a custom deleter for this object that does not call
+       * <code>delete[]</code>, but instead calls @p free().
        */
-      std::unique_ptr<Number[]> values;
+      std::unique_ptr<Number[], void (*)(void *)> values;
 
       /**
        * For parallel loops with TBB, this member variable stores the affinity
index 5edb5c8db1fac473112395ce62343b4048cbdfa6..c120889a0e286de2a653571e0f33b5604cc0702f 100644 (file)
@@ -204,7 +204,7 @@ namespace LinearAlgebra
       :
       partitioner (new Utilities::MPI::Partitioner()),
       allocated_size (0),
-      values (nullptr)
+      values (nullptr, &free)
     {
       reinit(0);
     }
@@ -216,7 +216,7 @@ namespace LinearAlgebra
       :
       Subscriptor(),
       allocated_size (0),
-      values (nullptr),
+      values (nullptr, &free),
       vector_is_ghosted (false)
     {
       reinit (v, true);
@@ -240,7 +240,7 @@ namespace LinearAlgebra
                             const MPI_Comm  communicator)
       :
       allocated_size (0),
-      values (nullptr),
+      values (nullptr, &free),
       vector_is_ghosted (false)
     {
       reinit (local_range, ghost_indices, communicator);
@@ -253,7 +253,7 @@ namespace LinearAlgebra
                             const MPI_Comm  communicator)
       :
       allocated_size (0),
-      values (nullptr),
+      values (nullptr, &free),
       vector_is_ghosted (false)
     {
       reinit (local_range, communicator);
@@ -265,7 +265,7 @@ namespace LinearAlgebra
     Vector<Number>::Vector (const size_type size)
       :
       allocated_size (0),
-      values (nullptr),
+      values (nullptr, &free),
       vector_is_ghosted (false)
     {
       reinit (size, false);
@@ -278,7 +278,7 @@ namespace LinearAlgebra
     Vector (const std::shared_ptr<const Utilities::MPI::Partitioner> &partitioner)
       :
       allocated_size (0),
-      values (nullptr),
+      values (nullptr, &free),
       vector_is_ghosted (false)
     {
       reinit (partitioner);

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.