blob: cf0f1774f0e1d2231aae6730317a14058d91eb8a [file] [log] [blame]
Francis Murtaghe8d7ccb2021-10-14 17:30:24 +01001//
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
13namespace armnn
14{
15
16/** Default Memory Allocator class returned from IBackendInternal::GetDefaultAllocator(MemorySource) */
17class DefaultAllocator : public armnn::ICustomAllocator
18{
19public:
20 DefaultAllocator() = default;
21
22 void* allocate(size_t size, size_t alignment = 0) override
23 {
24 IgnoreUnused(alignment);
Finn Williamsb1aad422021-10-28 19:07:32 +010025 return ::operator new(size_t(size));
Francis Murtaghe8d7ccb2021-10-14 17:30:24 +010026 }
27
28 void free(void* ptr) override
29 {
Finn Williamsb1aad422021-10-28 19:07:32 +010030 ::operator delete(ptr);
Francis Murtaghe8d7ccb2021-10-14 17:30:24 +010031 }
32
33 armnn::MemorySource GetMemorySourceType() override
34 {
35 return armnn::MemorySource::Malloc;
36 }
37
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