В учебнике по языку Pascal процедура удаления элемента из стека описана так:
Procedure ReadStack(var u: pt; var dig: integer);
var x: pt;
begin
dig := u^.Data; // извлекаются данные из верхнего элемента стека
x := u; // сохраняется ссылка на верхний элемент
u := u^.Next; // вершиной стека становится следующий элемент
Dispose(x); // очищается память из под извлеченного элемента
end;
Почему нельзя сделать проще?
Procedure ReadStack(var u: pt; var dig: integer);
begin
dig := u^.Data; // извлекаются данные из верхнего элемента стека
u := u^.Next; // вершиной стека становится следующий элемент
end;
1) Т.е. в Pascal отсутствие ссылок на участок памяти, не освобождает ее?
2) Это и есть пример отсутствия так называемого «механизма автоматической сборки мусора»?
3) Получается, в этом смысле Си отличается от Паскаля; в первом мусор собирается автоматически?