Pascal-动态内存分配

Pascal-动态内存分配,pascal,freepascal,Pascal,Freepascal,我想要一个函数,当被调用时创建一个新堆栈,执行一些操作,然后处理用于堆栈的内存。我该怎么做 我使用数组实现了我的堆栈: Type stack = record T :array[1..100] of integer; top:Integer end; 编辑: 我希望在函数中使用堆栈,并且希望它是本地的 如果我这样做 function A() var S:stack begin code(); end; 函数完成后,它会在变量S之后释放内存吗?还是我必须处理它?如果使用数组(静

我想要一个函数,当被调用时创建一个新堆栈,执行一些操作,然后处理用于堆栈的内存。我该怎么做

我使用数组实现了我的堆栈:

 Type stack = record
 T :array[1..100] of integer;
 top:Integer
 end;
编辑: 我希望在函数中使用堆栈,并且希望它是本地的

如果我这样做

function A()
var S:stack
begin
    code();
end;
函数完成后,它会在变量S之后释放内存吗?还是我必须处理它?

如果使用数组(静态)实现,则不需要“释放”内存

请阅读以下内容:

当变量位于函数(过程)内时,退出此函数后将删除该变量

实现堆栈可以使用静态数组或指针。。。在C语言中也是如此

使用数组实现堆栈的简单(无错误处理)

program StackExample;

type TStack = record
  Items : array [1..5] of integer;
  Top: integer;
end;

var Stack : TStack;

function Stack_Init() : TStack;
var
  Stack : TStack;
begin
  Stack.Top := 1;
  Stack_Init := Stack;
end;

procedure Stack_Push(var Stack: TStack; Item : integer);
begin
  Stack.Items[Stack.Top] := Item;
  Stack.Top := Stack.Top + 1;
end;

function Stack_Pop(var Stack: TStack) : integer;
begin
  Stack.Top := Stack.Top - 1;
  Stack_Pop := Stack.Items[Stack.Top]
end;

{-----------MAIN------------}
begin
    Stack := Stack_Init();

    Stack_Push(Stack, 1);
    Stack_Push(Stack, 2);
    Stack_Push(Stack, 3);

    Writeln(Stack_Pop(Stack)); {get >> 3}
    Writeln(Stack_Pop(Stack)); {get >> 2}
    Writeln(Stack_Pop(Stack)); {get >> 1}
end

.

这是一个很大的含糊不清的问题。试着重新措辞。在自由Pascal中有堆栈类,请参见contnrs和fgl单位。我将文章的精度提高了一点。