有人可以帮助我的基于堆栈的分配器。
static char Stack[MAX_SIZE];
static char *top = &Stack[0];
class STACKED {
public:
static void *operator new(size_t size) {
//Add this context to the context stack.
void *Result;
assert( (top + size) <= &Stack[MAX_SIZE] );
Result = top;
top = top + align_sizeof(size);
return Result;
}
static void operator delete(void *p) {
//Its a stack, and delete only removes the top entry.
// So *p represents where to delete to.
top = (char *)p;
}
static size_t align_sizeof(size_t object_size) {
// TODO: Align objects.
return object_size;
}
};
1)断言是否正确检测堆栈是否会溢出?
2) align_sizeof() - 我想对齐这些对象以解决性能/总线问题。但我不完全理解对齐。有人可以描述内存对齐,并建议一个公式来对齐堆栈对象吗?
2a)我目前的想法是“汇总”对象的大小,以便顶部始终对齐。有效地分配比所需更多的内存(在最后放置填充)。
3)我猜我还必须对齐静态字符堆栈[MAX_SIZE] - 我该怎么做?
谢谢!
PS任何其他评论总是欢迎