NEW |
Nouveau |
---|---|
Turbo Pascal 3+ | System |
Syntaxe
Procedure New(var p:Pointer); | Turbo Pascal 3+ |
Procedure New(var p:Pointer, Init:Constructor); | Turbo Pascal 5.5+ |
Paramètres
Nom | Description |
---|---|
p | Ce paramètre retourne un pointeur |
Init | Ce paramètre permet d'indiquer la procédure d'initialisation du constructeur. |
Description
Cette fonction permet d'allouer de la mémoire dynamique pour une variable.
Remarques
- Le paramètre p est une variable de pointeur de tout type de pointeur. La taille du bloc mémoire alloué correspond à la taille du type pointé par p. La variable nouvellement créée peut être référencée comme p^. S'il n'y a pas assez d'espace libre dans le tas pour allouer la nouvelle variable, une erreur d'exécution se produit.
- La procédure New a été étendu pour permettre à un appel de constructeur d'être un second paramètre pour l'allocation d'une variable de type objet dynamique. Le paramètre p est une variable de pointeur pointant sur un type d'objet et le Constructor est un appel au constructeur de ce type d'objet.
- Une extension supplémentaire permet à New d'être utilisé en tant que fonction, allouant et retournant une variable dynamique du type spécifié. Si l'appel est de la forme New(p), p peut être n'importe quel type de pointeur. Si l'appel est de la forme New(P,Init), p doit pointer sur un type d'objet et Init doit être un appel au constructeur de ce type d'objet. Dans les deux cas, le type de résultat de la fonction est p.
Exemple
Voici un exemple d'une utilisation typique de cette procédure :
- Program NewSamples;
-
- Type
- personne=Record
- salutation:Char;
- prenom:String[30];
- nomfamille:String[30];
- ville:String[30];
- pays:String[30];
- province:String[30];
- End;
-
- Var
- a:^personne;
-
- BEGIN
- New(a);
- If(a <> NIL)Then Begin
- a^.salutation := 'M';
- a^.prenom := 'Sylvain';
- a^.nomfamille := 'Maltais';
- a^.ville := 'Laval';
- a^.pays := 'CA';
- a^.province := 'QC';
- WriteLn('Prénom : ',a^.prenom);
- WriteLn('Nom : ',a^.nomfamille);
- WriteLn('Ville : ',a^.ville);
- Dispose(a);
- End
- Else
- Begin
- WriteLn('Manque de mémoire');
- End;
- END.
on obtiendra le résultat semblable suivant :
Prénom : SylvainNom : Maltais
Ville : Laval
Référence
Aide-mémoire de Turbo Pascal versions de 3 à 6, Edition Marabout, De Groote, Virga, 1992, ISBN: 2-501-01833-8, page 297.
Dernière mise à jour : Dimanche, le 25 janvier 2015