kfr

Fast, modern C++ DSP framework, FFT, Sample Rate Conversion, FIR/IIR/Biquad Filters (SSE, AVX, AVX-512, ARM NEON)
Log | Files | Refs | README

commit d5d7d0707b402ac6f281cbcc3a9087e5da8f1cd8
parent abf3f551ec16bcf1d66a95ed4a163f2818e3e415
Author: d.levin256@gmail.com <d.levin256@gmail.com>
Date:   Tue, 26 Nov 2019 09:44:10 +0000

Aligned reallocate

Diffstat:
Minclude/kfr/base/memory.hpp | 31+++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+), 0 deletions(-)

diff --git a/include/kfr/base/memory.hpp b/include/kfr/base/memory.hpp @@ -110,6 +110,37 @@ inline void aligned_free(void* ptr) } inline void aligned_release(void* ptr) { aligned_free(ptr); } + +inline void* aligned_reallocate(void* ptr, size_t new_size, size_t alignment) +{ + if (ptr) + { + if (new_size) + { + void* new_ptr = aligned_malloc(new_size, alignment); + size_t old_size = aligned_size(ptr); + memcpy(new_ptr, ptr, std::min(old_size, new_size)); + aligned_release(ptr); + return new_ptr; + } + else + { + aligned_release(ptr); + return nullptr; + } + } + else + { + if (new_size) + { + return internal_generic::aligned_malloc(new_size, alignment); + } + else + { + return nullptr; // do nothing + } + } +} } // namespace internal_generic /// @brief Allocates aligned memory