Отличается ли "вершина" стека от начала и конца?

Я использую библиотеку C libYAML для обработки файлов конфигурации YAML, и меня немного смущает этот элемент структуры в его коде:

/** The stack of mapping pairs (key, value). */
struct {
    /** The beginning of the stack. */
    yaml_node_pair_t *start;
    /** The end of the stack. */
    yaml_node_pair_t *end;
    /** The top of the stack. */
    yaml_node_pair_t *top;
} pairs;

Он использует три указателя, start, end, а также top, И то и другое start а также end Кажется очевидным, они являются началом и концом области данных, но что top?

(Для справки этот код появляется в строке 741 здесь.)

1 ответ

Решение

Начало и конец относятся к максимальным границам стека. Верхняя часть - это динамический указатель, ссылающийся на текущую позицию, который изменяется по мере вызова вложенных уровней функций.

Другие вопросы по тегам