这个C++堆栈分配器的改进?

Unk*_*own 6 c++ memory memory-management

对基于堆栈的分配器的任何建议?(除了建议使用私人/公共成员的课程)

struct Heap
{
    void* heap_start;
    void* heap_end;
    size_t max_end;

    Heap(size_t size)
    {
        heap_start = malloc(size);
        heap_end = heap_start;
        max_end = size + (size_t) heap_start;
    }

    ~Heap()
    {
        ::free(heap_start);
    }

    void* allocate(size_t bytes)
    {

        size_t new_end = ((size_t) heap_end) + bytes;

        if( new_end > max_end )
            throw std::bad_alloc();

        void* output = heap_end;
        heap_end = (void*) new_end;
        return output;
    }

}
Run Code Online (Sandbox Code Playgroud)

jus*_*nhj 4

您已经实现了一个基于堆栈的分配器。你无法在不留间隙的情况下释放。通常,池是指具有固定大小插槽的连续内存块,它们是双重链接的以允许恒定时间添加和删除。

您可以将以下内容用作指南。它与您的路线相同,但包括分配节点上的基本迭代器,并使用模板来识别类型。