Simscript III/Dictionnaire des instructions/RELEASE

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche

L’énoncé release désalloue l’espace mémoire alloué à un tableau. Les éléments du tableau ne sont donc plus disponibles.

Syntaxe :


Variable peut nommé un tableau de variables, d’ensembles ou d’attributs.


Exemple :

release x(*);				‘‘ désalloue le tableau x (une dimension)
release y(*);				‘‘ désalloue le tableau y (une dimension)
release Tableau(*, *);			‘‘ désalloue le tableau Tableau (deux dimensions)
release x(*), y(*), Tableau(*, *);		‘‘ désalloue les tableaux x, y, Tableau
release Groupe(*);				‘‘ désalloue le tableau densembles Groupe

‘‘ désallocation partielle dun tableau
define table as a 2-dim double array ;
reserve table(*, *) as 3 by 4;
.
release table(2, *);
reserve table(2, *) as 8;


Si un objet a un attribut qui est un tableau, il est nécessaire que l’espace soit libéré avant de détruire l’objet. Pour permettre de désallouer un tel tableau, l’énoncé release doit être spécifié dans une méthode qui est spécifiée dans un énoncé before destroying et appelée automatiquement avant que l’objet soit détruit.

begin class  Objet;				‘‘ désalloue le tableau x (une dimension)
    every Objet has an  Attribut_1,
                    an  Attribut_2,
                and a   Libérer method;
    define Attribut_1, Attribut_2 as 1-dim double arrays;
    before destroying an Objet, call Libérer ;
end;				‘‘ classe objet

method ObjetLibérer
	
    ‘‘ Libérer lespace alloué aux tableaux avant de détruire lobjet
    release Attribut_1(*), Attribut_2(*);

end ‘‘ ObjetLibérer

define unObjet as a Objet reference variable;
create unObjet;
reserve Attribut_1(unObjet)(*), Attribut_2(unObjet) (*) as 25;
.....
destroy unObjet; ‘‘ La méthode libérer est automatique appelée avant de détruire lobjet