208 5. Engine Support Systems
classStackAllocator
{
public:
// Stack marker: Represents the current top of the
// stack. You can only roll back to a marker, not to
// arbitrary locations within the stack.
typedef U32 Marker;// Constructs a stack allocator with the given total
// size.
explicit StackAllocator(U32 stackSize_bytes);// Allocates a new block of the given size from stack
// top.
void* alloc(U32 size_bytes);// Returns a marker to the current stack top.
Marker getMarker();// Rolls the stack back to a previous marker.
void freeToMarker(Marker marker);// Clears the entire stack (rolls the stack back to
// zero).
void clear();Obtain marker after allocating blocks A and B.A BAllocate additional blocks C , D and E.A B C D EFree back to marker.A BFigure 5.1. Stack allocation, and freeing back to a marker.