-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmemory.h
46 lines (35 loc) · 835 Bytes
/
memory.h
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
40
41
42
43
44
45
46
struct memory_header
{
size_t size;
struct memory_header *prev;
struct memory_header *next;
/* Chunk states:
* 0: Free chunk.
* 1: Chunk allocated.
* 2: Chunk reserved.
*/
u8int state;
};
class Memory
{
private:
struct memory_header *head, *bottom;
struct memory_header *merge_chunks(struct memory_header *element);
public:
Memory();
void register_pool(void *base, size_t length);
void free(void * ptr);
void *allocate(size_t size);
void *allocopy(void *ptr, size_t size);
#ifdef DEBUG
void debug(Screen *screen);
#endif
};
void set_memory_handler(Memory *mem);
void *malloc(size_t);
void free(void *p);
void *memset (void *s, int c, size_t n);
void * operator new (size_t size);
void * operator new[] (size_t size);
void operator delete (void *p);
void operator delete[] (void *p);