diff --git a/include/MemoryProcessing.cuh b/include/MemoryProcessing.cuh
index 411b5f62360678a896596aac03c6e4aad078a005..d3fb882f216fbce20824969184d84d39a06e4b38 100644
--- a/include/MemoryProcessing.cuh
+++ b/include/MemoryProcessing.cuh
@@ -10,6 +10,9 @@ namespace memproc
     template<MemType memtype>
     bool dealloc(void *&array, size_t &allocated_size);
 
+    template<MemType memtype>
+    bool dealloc(void *&array);
+
     template <MemType dst_memtype, MemType src_memtype>
     bool memcopy(void *dst, const void* src, const size_t copy_elem_size);
 }
\ No newline at end of file
diff --git a/include/MemoryProcessing.h b/include/MemoryProcessing.h
index 4721807e33b5f54e81a23ab12b21466eb2ca3c53..409d2921c54cbbcdda0a5c8fc276906c8472b37e 100644
--- a/include/MemoryProcessing.h
+++ b/include/MemoryProcessing.h
@@ -10,6 +10,9 @@ namespace memproc
     template<MemType memtype>
     bool dealloc(void *&array, size_t &allocated_size);
 
+    template<MemType memtype>
+    bool dealloc(void *&array);
+
     template <MemType dst_memtype, MemType src_memtype>
     bool memcopy(void *dst, const void* src, const size_t copy_elem_size);
 }
diff --git a/src/MemoryProcessing.cpp b/src/MemoryProcessing.cpp
index 4c2d2f6b0c70595a61dc3e68587d6fd18ed086b1..8705f200dacb72ef3e4e5d663036091849005795 100644
--- a/src/MemoryProcessing.cpp
+++ b/src/MemoryProcessing.cpp
@@ -14,6 +14,13 @@ bool memproc::dealloc<MemType::CPU>(void *&array, size_t &allocated_size)
     return true;
 }
 
+template<>
+bool memproc::dealloc<MemType::CPU>(void *&array)
+{
+    free(array);
+    return true;
+}
+
 template <>
 bool memproc::realloc<MemType::CPU>(void *&array, size_t &allocated_size, const size_t new_size)
 {
diff --git a/src/MemoryProcessing.cu b/src/MemoryProcessing.cu
index 205a9fa61ab5e9ae9d8c077c0c98e125d5c78872..5447a3aec52a4d4ca2c2439a9fe1d321a141ae1a 100644
--- a/src/MemoryProcessing.cu
+++ b/src/MemoryProcessing.cu
@@ -14,6 +14,13 @@ bool memproc::dealloc<MemType::GPU>(void *&array, size_t &allocated_size)
     return true;
 }
 
+template<>
+bool memproc::dealloc<MemType::GPU>(void *&array)
+{
+    cudaFree(array);
+    return true;
+}
+
 template <>
 bool memproc::realloc<MemType::GPU>(void *&array, size_t &allocated_size, const size_t new_size)
 {