diff --git a/Eigen/src/Core/products/Parallelizer.h b/Eigen/src/Core/products/Parallelizer.h index 4079063eb..126cfbbff 100644 --- a/Eigen/src/Core/products/Parallelizer.h +++ b/Eigen/src/Core/products/Parallelizer.h @@ -129,7 +129,7 @@ void parallelize_gemm(const Functor& func, Index rows, Index cols, bool transpos Index blockRows = (rows / threads); blockRows = (blockRows/Functor::Traits::mr)*Functor::Traits::mr; - GemmParallelInfo* info = new GemmParallelInfo[threads]; + ei_declare_aligned_stack_constructed_variable(GemmParallelInfo,info,threads,0); #pragma omp parallel num_threads(threads) { @@ -146,8 +146,6 @@ void parallelize_gemm(const Functor& func, Index rows, Index cols, bool transpos if(transpose) func(c0, actualBlockCols, 0, rows, info); else func(0, rows, c0, actualBlockCols, info); } - - delete[] info; #endif } diff --git a/Eigen/src/OrderingMethods/Amd.h b/Eigen/src/OrderingMethods/Amd.h index 41b4fd7e3..ce7c0bbf3 100644 --- a/Eigen/src/OrderingMethods/Amd.h +++ b/Eigen/src/OrderingMethods/Amd.h @@ -106,7 +106,8 @@ void minimum_degree_ordering(SparseMatrix& C, Permutation t = cnz + cnz/5 + 2*n; /* add elbow room to C */ C.resizeNonZeros(t); - Index* W = new Index[8*(n+1)]; /* get workspace */ + // get workspace + ei_declare_aligned_stack_constructed_variable(Index,W,8*(n+1),0); Index* len = W; Index* nv = W + (n+1); Index* next = W + 2*(n+1); @@ -424,8 +425,6 @@ void minimum_degree_ordering(SparseMatrix& C, Permutation } perm.indices().conservativeResize(n); - - delete[] W; } } // namespace internal