dynamem

index
index principal

Description

Gestion dynamique de la mémoire EDS.
Le gestionnaire maintiens 2 listes chaînée.
* la liste des blocs disponibles
* la liste des blocs utilisés.

STRUCTURE ENTÊTE DE BLOC
offsetgrandeurdescription
0
2
grandeur excluant l'entête.
2
2
lien vers le bloc suivant.
4
2
lien vers le bloc précédent.

index principal

HEAPINIT ( -- )

Initialiation du gestionnaire, libère tous les blocs alloués.
Remet à zéro la mémoire.
Au démarrage l'unité de gestion des blocs réserve de la mémoire dynamique
donc si vous appellez HEAPINIT sur la ligne de commande ou dans une application
l'unité de gestion des blocs ne fonctionnera plus.

arguments:
aucun   
retourne:
rien  
index
haut
index principal

HEAPSIZE ( -- n+ )

Constante, retourne la grandeur de la mémoire dynamique en octets.

arguments:
aucun   
retourne:
n+   Grandeur de la mémoire dynamique.
index
haut
index principal

HEAPFREE ( -- n )

Retourne le nombre d'octets libres dans la mémoire dynamique.

arguments:
aucun   
retourne:
n   Octets libres.
index
haut
index principal

BSIZE@ ( a-addr -- n )

Retourne la grandeur d'un bloc de données en octets.

arguments:
a-addr   adresse retournée par MALLOC
retourne:
n   Nombre d'octets de données du bloc.
index
haut
index principal

MALLOC ( n -- a-addr | 0 )

Allocation d'un bloc de mémoire dynamique.
Retourne un pointeur sur le premier octet de données de ce bloc.
Si aucun bloc n'est disponible retourne 0.

arguments:
n   grandeur requise
retourne:
a-addr|0   Adresse du premier octet de donnée du bloc, ou 0 si non disponible.
index
haut
index principal

FREE ( a-addr -- )

Libération d'un bloc mémoire dynamique. Le bloc libéré est ajouté à la liste des blocs libres.

arguments:
a-addr   pointeur sur le bloc à libérer.
retourne:
rien  
index
haut
index principal

BUFFER: ( cccc S: n -- )

Alloue un bloc de mémoire dynamique de 'n' octets. Cré une constante dont
le nom cccc suis dans le texte d'entrée et assigne l'adresse du buffer à cette constante.
Ce buffer ne doit pas être libéré à moins que la constante qui le lie soit détruite
avec forget, sinon l'adresse retournée par cette constante serait invalide.
exemple:

120 BUFFER: data \ l'invocation de data va retourner l'adresse
\ du premier octet du bloc de donnée.

arguments:
n   Grandeur en octet du buffer.
cccc   Nom de la constante qui va retourner l'adresse du buffer.
retourne:
rien   
index
haut
index principal

Index


haut
index principal