blob: a01252ce328cead15fd1e96d9aac3426a0806428 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
#pragma once
#include <types.h>
class MemoryAllocator {
public:
MemoryAllocator(uint32_t start, size_t size);
void* allocate(size_t size);
void deallocate(void* ptr);
size_t free_space() const;
size_t used_space() const;
private:
struct MemoryChunk {
MemoryChunk* prev = nullptr;
MemoryChunk* next = nullptr;
bool allocated = false;
size_t size = 0;
};
MemoryChunk* begin;
};
namespace std {
struct nothrow_t {
explicit nothrow_t() = default;
};
}; // namespace std
void* operator new(unsigned, const std::nothrow_t&) noexcept;
void* operator new[](unsigned, const std::nothrow_t&) noexcept;
void operator delete(void* ptr);
void operator delete[](void* ptr);
// placement new
void* operator new(unsigned, void*);
void* operator new[](unsigned, void*);
|