1 // 2 // Copyright © 2021 Arm Ltd and Contributors. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #pragma once 7 8 #include <cstddef> 9 #include <memory> 10 #include <armnn/MemorySources.hpp> 11 #include <armnn/utility/IgnoreUnused.hpp> 12 13 namespace armnn 14 { 15 16 /** Default Memory Allocator class returned from IBackendInternal::GetDefaultAllocator(MemorySource) */ 17 class DefaultAllocator : public armnn::ICustomAllocator 18 { 19 public: 20 DefaultAllocator() = default; 21 allocate(size_t size,size_t alignment=0)22 void* allocate(size_t size, size_t alignment = 0) override 23 { 24 IgnoreUnused(alignment); 25 return ::operator new(size_t(size)); 26 } 27 free(void * ptr)28 void free(void* ptr) override 29 { 30 ::operator delete(ptr); 31 } 32 GetMemorySourceType()33 armnn::MemorySource GetMemorySourceType() override 34 { 35 return armnn::MemorySource::Malloc; 36 } 37 GetMemoryRegionAtOffset(void * buffer,size_t offset,size_t alignment=0)38 void* GetMemoryRegionAtOffset(void* buffer, size_t offset, size_t alignment = 0) override 39 { 40 IgnoreUnused(alignment); 41 return static_cast<char*>(buffer) + offset; 42 } 43 }; 44 45 } // namespace armnn