【发布时间】:2010-10-20 18:20:44
【问题描述】:
对我的基于堆栈的分配器有什么建议吗? (除了建议使用具有私有/公共成员的类)
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;
}
}
【问题讨论】:
-
我的 C++ 内存池怎么样?
-
只是想知道是否有任何方法可以优化它,或者更好的约定等。
-
好的,修改标题以使其更清晰。
-
这是一个线性分配器,如果您不关心解除分配或可以一次解除分配,这是完美的选择。我不会将其描述为堆。
-
@Tom 根据在线定义cplus.about.com/od/glossar1/g/heap.htm 堆是用于分配动态变量的任何内存块。
标签: c++ memory memory-management