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单位。我将文章的精度提高了一点。