GETMEM |
Demande la mémoire |
---|---|
Free Pascal | System |
Syntaxe
Procedure Getmem(var p: Pointer;Size: PtrInt); |
Function GetMem(size: PtrInt):Pointer; |
Paramètres
Nom | Description |
---|---|
p | Ce paramètre retourne le pointeur sur la mémoire dynamique alloué |
Size | Ce paramètre permet d'indiquer la taille de la mémoire demandé en octet |
Description
Cette procédure permet d'effectuer une allocation dynamique sur la mémoire de tas.
Remarques
- AllocMem vs GetMem : La différence entre la fonction GetMem et AllocMem réside dans le fait que la fonction GetMem ne remplit de valeur 0 le bloc de mémoire alloué avant de lui en donner l'accès. De ce fait, elle est donc légèrement plus lente que GetMem car elle effectue un traitement de plus.
- GetMem vs New : La différence entre le fait d'utiliser la fonction New et la procédure GetMem, réside dans le fait que GetMem permet d'indiquer la taille exacte de mémoire a attribué.
- La procédure et fonction Getmem réserve la mémoire Size octets sur la mémoire de tas et renvoie un pointeur vers cette mémoire dans p. Que se passe-t-il s'il n'y a plus de mémoire disponible, dépend de la valeur de la variable ReturnNilIfGrowHeapfails : si la variable est True, Nil est retourné. Si la variable est False, une erreur d'exécution est générée. La valeur par défaut est False, donc par défaut une erreur est générée.
- La mémoire nouvellement allouée n'est en aucun cas initialisée et peut contenir des données inutiles. Il doit être effacé avec un appel à FillChar ou FillWord.
Exemple
Voici quelques exemples typiques de l'utilisation de la fonction «GetMem» en Free Pascal :
- Program GetMemSamples;
-
- Type
- TInteger = Array[0..20] of Integer;
-
- Var
- P:^TInteger;
- I:Integer;
-
- BEGIN
- GetMem(P,20 * SizeOf(Integer));
- If NIL <> P Then Begin
- For I := 0 to 19 do P^[I] := 1000-(I * 10);
- WriteLn('Valeur P^[15] = ',P^[15]);
- FreeMem(P,20 * SizeOf(Integer));
- End
- Else
- Begin
- WriteLn('Impossible d''allouer de la mémoire dynamiquement !');
- End;
- END.
on obtiendra le résultat suivant :
Valeur p[15] = 850Voir également
Langage de programmation - Free Pascal - Référence de procédures et fonctions - ALLOCMEM
Langage de programmation - Free Pascal - Référence de procédures et fonctions - NEW
Langage de programmation - Free Pascal - Référence de procédures et fonctions - Freemem
Langage de programmation - Free Pascal - Référence de procédures et fonctions - Dispose
Langage de programmation - Free Pascal - Référence de procédures et fonctions - MemSize
Dernière mise à jour : Samedi, le 18 juillet 2015