diff --git a/src/utils/Array.hpp b/src/utils/Array.hpp
index 5eb834b85fb8f0679636531e740863286e912c3d..9fa02e95a41a5200260fab84cda211412c4747e2 100644
--- a/src/utils/Array.hpp
+++ b/src/utils/Array.hpp
@@ -85,10 +85,15 @@ class [[nodiscard]] Array
   Array& operator=(Array&&) = default;
 
   PUGS_INLINE
-  explicit Array(size_t size) : m_values("anonymous", size)
+  explicit Array(size_t size)
   {
     static_assert(not std::is_const<DataType>(), "Cannot allocate Array of const data: only view is "
                                                  "supported");
+    if constexpr (std::is_arithmetic_v<DataType>) {
+      m_values = Kokkos::View<DataType*>{Kokkos::view_alloc(Kokkos::WithoutInitializing, "anonymous"), size};
+    } else {
+      m_values = Kokkos::View<DataType*>{"anonymous", size};
+    }
   }
 
   PUGS_INLINE
diff --git a/src/utils/Table.hpp b/src/utils/Table.hpp
index eedc5e7d72c4c2f935f0ecafe0d24747c3b2d00e..02c98c0b1f557bf401f876a9dbddbc7a15cbae6c 100644
--- a/src/utils/Table.hpp
+++ b/src/utils/Table.hpp
@@ -99,10 +99,16 @@ class [[nodiscard]] Table
   Table& operator=(Table&&) = default;
 
   PUGS_INLINE
-  explicit Table(size_t nb_lines, size_t nb_columns) : m_values("anonymous", nb_lines, nb_columns)
+  explicit Table(size_t nb_lines, size_t nb_columns)
   {
     static_assert(not std::is_const<DataType>(), "Cannot allocate Table of const data: only view is "
                                                  "supported");
+    if constexpr (std::is_arithmetic_v<DataType>) {
+      m_values =
+        Kokkos::View<DataType**>{Kokkos::view_alloc(Kokkos::WithoutInitializing, "anonymous"), nb_lines, nb_columns};
+    } else {
+      m_values = Kokkos::View<DataType**>{"anonymous", nb_lines, nb_columns};
+    }
   }
 
   PUGS_INLINE