gpt4 book ai didi

c++ - 此 C++ 堆栈分配器的改进?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:50 24 4
gpt4 key购买 nike

对基于堆栈的分配器有什么建议吗?(除了建议使用带有私有(private)/公共(public)成员的类)

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;
}

}

最佳答案

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

Here's one您可以用作指南。它与您的相同,但包括分配节点上的基本迭代器,并使用模板来识别类型。

关于c++ - 此 C++ 堆栈分配器的改进?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/771458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com