From 7ddd9f1bc34d713ae8b91fdf09642abdf29c33d4 Mon Sep 17 00:00:00 2001 From: studiosi Date: Sat, 15 Aug 2026 17:04:40 +0300 Subject: [PATCH] Solved: 16 - Dynamic Memory --- .../include/dynamic_memory.hpp | 2 +- .../src/dynamic_memory.cpp | 20 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/modules/05_pointers_and_references/include/dynamic_memory.hpp b/modules/05_pointers_and_references/include/dynamic_memory.hpp index 6e7fced..ed861b8 100644 --- a/modules/05_pointers_and_references/include/dynamic_memory.hpp +++ b/modules/05_pointers_and_references/include/dynamic_memory.hpp @@ -5,7 +5,7 @@ namespace pointers { [[nodiscard]] auto allocate_and_fill(std::size_t count, int value) -> int*; -void deallocate(int* ptr); +void deallocate(const int* ptr); [[nodiscard]] auto clone_array(const int* source, std::size_t count) -> int*; } // namespace pointers diff --git a/modules/05_pointers_and_references/src/dynamic_memory.cpp b/modules/05_pointers_and_references/src/dynamic_memory.cpp index ed1e3bb..c3a5cf5 100644 --- a/modules/05_pointers_and_references/src/dynamic_memory.cpp +++ b/modules/05_pointers_and_references/src/dynamic_memory.cpp @@ -1,9 +1,23 @@ #include "dynamic_memory.hpp" +#include + namespace pointers { -auto allocate_and_fill(std::size_t count, int value) -> int* { (void)count; (void)value; return nullptr; } -void deallocate(int* ptr) { delete[] ptr; } -auto clone_array(const int* source, std::size_t count) -> int* { (void)source; (void)count; return nullptr; } +auto allocate_and_fill(const std::size_t count, const int value) -> int* { + const auto na = new int[count]; + std::fill_n(na, count, value); + return na; +} + +void deallocate(const int* ptr) { + delete[] ptr; +} + +auto clone_array(const int* source, const std::size_t count) -> int* { + const auto na = new int[count]; + std::copy_n(source, count, na); + return na; +} } // namespace pointers