← Back to Docs

📦 Memory Management

LUT-based pointer safety — no GC, no leaks, no UB

The Problem

Memory bugs are the #1 cause of security vulnerabilities and crashes.

The Guardian's Solution

LUT (Lookup Table) — Every pointer is tracked.

class MemoryManager {
    void* allocate(size_t size);
    void deallocate(void* ptr);
    void register_pointer(void* ptr, size_t size, const std::string& name = "");
    void unregister_pointer(void* ptr);
    bool is_valid_pointer(void* ptr) const;
};

Usage Example

memory::MemoryManager mem;

// 1. Allocate
void* ptr = mem.allocate(1024);

// 2. Register (track it)
mem.register_pointer(ptr, 1024, "buffer");

// 3. Validate (check if it's safe)
if (mem.is_valid_pointer(ptr)) {
    // Use ptr safely
}

// 4. Unregister (remove tracking)
mem.unregister_pointer(ptr);

// 5. Deallocate (free memory)
mem.deallocate(ptr);

Memory Pool

For performance-critical applications:

memory::MemoryPool pool(4096);
void* ptr = pool.allocate(128);
pool.deallocate(ptr);
pool.reset();

Why No GC?