Libére l'espace pointé pascal/delphi
Résolu
fahim0788
Messages postés
111
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
comment faire en pascal ou delphi pour libérer l'espace mémoire pointé par un pointeur?
comment faire en pascal ou delphi pour libérer l'espace mémoire pointé par un pointeur?
A voir également:
- Libére l'espace pointé pascal/delphi
- Delphi 7 - Télécharger - Langages
- Turbo pascal - Télécharger - Édition & Programmation
- Espace insécable - Guide
- Comment liberer de l'espace sur gmail - Guide
- My pascal - Télécharger - Édition & Programmation
3 réponses
Pour tes soucis de pile (gestion de la mémoire aujourd'hui, taille d'une pile hier...)
Voici une unité Pascal contenant quelques fonctions fondamentales sur les piles
J'espère que ça pourra t'aider (en cas de bug sue une fonction, merci de m'en informer)
Voici une unité Pascal contenant quelques fonctions fondamentales sur les piles
J'espère que ça pourra t'aider (en cas de bug sue une fonction, merci de m'en informer)
unit UnitePile;
interface
type Elem=integer; // par exemple
Pile=^Niveau;
Niveau=record
e:elem;
p:pile;
end;
procedure Decapiter(var p:Pile); // supprime le sommet de la pile
procedure Supprimer(var p:Pile); // supprime toute la pile
procedure Initialiser(var p:Pile); // associe à p une base de pile
procedure Empiler(var p:Pile;e:Elem); // rajoute "e" au sommet de la pile
procedure Depiler(var p:Pile;var e:Elem); // extrait le sommet de la pile
function Sommet(p:Pile):Elem; // accède à l'élément du sommet
function TaillePile(p:Pile):integer; // donne le nombre d'élément empilé
implementation
const ElemZero=0; // dépend de Elem, utilisé dans Initialiser
procedure Decapiter(var p:Pile);
var q:Pile;
begin
if p<>nil then begin
q:=(p^).p;
dispose(p);
p:=q;
end;
end;
procedure Supprimer(var p:Pile);
begin
if p<>nil then begin
Decapiter(p);
Supprimer(p);
end;
end;
procedure Initialiser(var p:Pile);
begin
Supprimer(p); // nécessite que p ai déjà été affecté (nil par exemple)
new(p);
(p^).p:=nil;
(p^).e:=ElemZero;
end;
procedure Empiler(var p:Pile;e:Elem);
var q:Pile;
begin
q:=p;
new(p);
(p^).e:=e;
(p^).p:=q;
end;
function Sommet(p:Pile):Elem;
begin
result:=(p^).e;
end;
procedure Depiler(var p:Pile;var e:Elem);
begin
e:=Sommet(p);
Decapiter(p);
end;
function TaillePile(p:Pile):integer;
begin
if p=nil then result:=0
else result:=TaillePile((p^).p)+1;
end;
begin end.Un programme type avec une pile sera donc :program SansNom; uses UnitePile; var p:Pile; begin p:=nil; Initialiser(p); //... Supprimer(p); end.
J'avais initialement compilé mon unité sous Dev-Pascal 1.9.2, mais je l'ai récemment compilé sous Delphi 6 et je me suis aperçu qu'il ne compilait pas donc j'ai rectifié :
procedure Initialiser(var p:Pile); begin Supprimer(p); // bah oui, en fait Initialiser(p) sert à rien... désolé ! end; procedure Empiler(var p:Pile;e:Elem); var n:niveau; begin n.e:=e; n.p:=p; p^:=n; end;