Trash Stacks
Trash Stacks — Поддержка стека неиспользуемых распределённых частей памяти.
|
|
Описание
GTrashStack это эффективный способ сохранить стек неиспользуемых распределённых участков памяти. Каждый участок памяти должен быть достаточно большим для вмещения gpointer. Это позволяет поддержку стека без дополнительного пространства, так как стек указателей может быть сохранён внутри участка памяти.
Нет функции для создания GTrashStack.
NULL
GTrashStack*
это совершенно правильный пустой стек.
Детали
GTrashStack
typedef struct {
GTrashStack *next;
} GTrashStack;
Каждый участок памяти, который помещён в стек, приводится к GTrashStack*.
GTrashStack *next; |
указатель на предыдущий элемент стека,
сохраняется в первом sizeof (gpointer)
байте элемента.
|
g_trash_stack_push ()
void g_trash_stack_push (GTrashStack **stack_p,
gpointer data_p);
Помещает участок памяти в GTrashStack.
stack_p : |
указатель на GTrashStack.
|
data_p : |
участок памяти помещаемый в стек.
|
g_trash_stack_height ()
guint g_trash_stack_height (GTrashStack **stack_p);
Возвращает высоту GTrashStack.
Помните что выполнение этой функции имеет сложность O(N), где N означает количество элементов стека.
stack_p : |
указатель на GTrashStack.
|
| Возвращает : |
высота стека.
|