155void*
free(
void* ptr);
200void mem_copy(
void* dest,
const void* src,
size_t n);
229void mem_set(
void* ptr,
int value,
size_t num);
Definition basic_alloc.cpp:25
void alloc_print()
Print allocation status table for debugging.
Definition basic_alloc.cpp:399
MemSizeT sub(MemSizeT a, MemSizeT b)
Subtract two sizes (clearing free bits first).
Definition basic_alloc.cpp:84
MemNode * __tail
Definition basic_alloc.cpp:28
void * try_realloc(void *ptr, MemSizeT size)
Reallocate a memory block to a new size.
Definition basic_alloc.cpp:322
MemNode * __head
Pointer to the head of the memory block linked list.
Definition basic_alloc.cpp:28
MemSizeT add(MemSizeT a, MemSizeT b)
Add two sizes (clearing free bits first).
Definition basic_alloc.cpp:72
void * try_calloc(size_t num, size_t size)
Allocate and zero-initialize an array.
Definition basic_alloc.cpp:371
void * free(void *ptr)
Free a memory block and merge with adjacent free blocks.
Definition basic_alloc.cpp:195
void mem_copy(void *dest, const void *src, size_t n)
Copy n bytes from source to destination.
Definition basic_alloc.cpp:298
void coalesce_nodes(MemNode *nd)
Merge a free node with adjacent free nodes.
Definition basic_alloc.cpp:141
constexpr MemSizeT MEM_NODE_SIZE
Size of the MemNode structure.
Definition basic_alloc.hpp:61
bool is_free(MemSizeT &size)
Check if block is free using bit 63.
Definition basic_alloc.cpp:35
void * sbrk_then_alloc(MemSizeT size)
Request memory from OS using sbrk and allocate.
Definition basic_alloc.cpp:100
MemSizeT get_size(MemSizeT &size)
Extract actual size by masking off bit 63.
Definition basic_alloc.cpp:62
constexpr MemSizeT MIN_FRAGMENT_SIZE
Minimum fragment size to consider splitting a block.
Definition basic_alloc.hpp:35
void * try_alloc(MemSizeT size)
Allocate memory using first-fit strategy.
Definition basic_alloc.cpp:271
constexpr MemSizeT BLOCK_SIZE
Size of each memory block requested from OS via sbrk.
Definition basic_alloc.hpp:38
void mem_set(void *ptr, int value, size_t num)
Set num bytes to specified value.
Definition basic_alloc.cpp:351
unsigned long long MemSizeT
Type definition for memory size.
Definition basic_alloc.hpp:32
void make_used(MemSizeT &size)
Mark block as used by clearing bit 63.
Definition basic_alloc.cpp:53
void shrink_then_align(MemNode *nd, MemSizeT size)
Shrink a block and create a new free block from remainder.
Definition basic_alloc.cpp:223
void make_free(MemSizeT &size)
Mark block as free by setting bit 63.
Definition basic_alloc.cpp:44
Metadata structure for each memory block.
Definition basic_alloc.hpp:54
MemNode * nxt
Pointer to next block in list.
Definition basic_alloc.hpp:55
MemNode * prv
Pointer to previous block in list.
Definition basic_alloc.hpp:56
MemSizeT size
Size in bytes (bit 0 = free flag)
Definition basic_alloc.hpp:57