Libére l'espace pointé pascal/delphi
Résolu
fahim0788
Messages postés
111
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
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
- Espace insécable - Guide
- Turbo pascal - Télécharger - Édition & Programmation
- Libérer espace 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;