From 19350d67b1c60b7944f53c536fa3becbd42fe4bc Mon Sep 17 00:00:00 2001
From: Lizzzka007 <gashchuk2011@mail.ru>
Date: Sat, 16 Dec 2023 19:31:46 +0300
Subject: [PATCH] Add alloc

---
 include/MemoryProcessing.cuh |  3 +++
 include/MemoryProcessing.h   |  3 +++
 src/MemoryProcessing.cpp     | 10 ++++++++++
 src/MemoryProcessing.cu      |  9 +++++++++
 4 files changed, 25 insertions(+)

diff --git a/include/MemoryProcessing.cuh b/include/MemoryProcessing.cuh
index d3fb882..965117a 100644
--- a/include/MemoryProcessing.cuh
+++ b/include/MemoryProcessing.cuh
@@ -4,6 +4,9 @@
 
 namespace memproc
 {
+    template <MemType memtype>
+    bool realloc(void *&array, const size_t new_size);
+
     template <MemType memtype>
     bool realloc(void *&array, size_t &allocated_size, const size_t new_size);
 
diff --git a/include/MemoryProcessing.h b/include/MemoryProcessing.h
index 409d292..b3db1fe 100644
--- a/include/MemoryProcessing.h
+++ b/include/MemoryProcessing.h
@@ -4,6 +4,9 @@
 
 namespace memproc
 {
+    template <MemType memtype>
+    bool alloc(void *&array, const size_t new_size);
+
     template <MemType memtype>
     bool realloc(void *&array, size_t &allocated_size, const size_t new_size);
 
diff --git a/src/MemoryProcessing.cpp b/src/MemoryProcessing.cpp
index 8705f20..ecaa177 100644
--- a/src/MemoryProcessing.cpp
+++ b/src/MemoryProcessing.cpp
@@ -21,6 +21,16 @@ bool memproc::dealloc<MemType::CPU>(void *&array)
     return true;
 }
 
+template <>
+bool memproc::alloc<MemType::CPU>(void *&array, const size_t new_size)
+{
+    array = malloc(new_size);
+    memset(array, 0, new_size);
+
+    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 5447a3a..9ce6d30 100644
--- a/src/MemoryProcessing.cu
+++ b/src/MemoryProcessing.cu
@@ -21,6 +21,15 @@ bool memproc::dealloc<MemType::GPU>(void *&array)
     return true;
 }
 
+template <>
+bool memproc::alloc<MemType::GPU>(void *&array, const size_t new_size)
+{
+    cudaMalloc ( (void **)&array, new_size);
+    cudaMemset(array, 0, new_size);
+
+    return true;
+}
+
 template <>
 bool memproc::realloc<MemType::GPU>(void *&array, size_t &allocated_size, const size_t new_size)
 {
-- 
GitLab