Lista Encadeada ou Alocação Dinâmica de Memória em Pascal

Problemática:

Ao criar um programa em Pascal nem sempre você sabe a quantidade de memória que será ocupada (alocada).

Ai você pode até aumentar esse limite para uma variável, mas o que impede que seja utilizado o limite novamente?

Solução:

Alocação dinâmica de memória.

Como fazer isso?

Utilizando-se de ponteiros. Um ponteiro ocupa 4 bytes e pode ser alocado e depois desalocado.

Exemplo de alocação (comando: NEW):

Var

i : ^Integer;

Begin

New(i);

if i=Nil then

  WriteLn (‘Falta de espaço na memória’)

else

  WriteLn (‘Memória alocada com sucesso!’);

ReadLn;

End.

Exemplo de desalocação (comando: DISPOSE):

Var

i : ^Integer;

Begin

Dispose(i);

WriteLn (‘Memória desalocada com sucesso!);

ReadLn;

End.

Exemplo de alocação de uma área da memória (comando: GETMEM):

Var

i : ^Integer;

n : Byte;

Nbytes : Word;

Begin

Write (‘Quantos elementos inteiros: ‘); ReadLn (n);

Nbytes := N*SizeOf(Integer); // Calcula a quantidade de bytes necessários

GetMem (i,Nbytes);

if i=Nil then

  WriteLn (‘Falta de espaço na memória’)

else

  WriteLn (‘Memória alocada com sucesso!’);

ReadLn;

End.

Para desalocar: FreeMem (i,Nbytes);

Um comentário:

  1. Legal, Me ajudou, precisava de alguns exemplos, vlw

    ResponderExcluir