Accueil        LEXIQUE        Unités        Algorithmes        Tutoriel   

Sommaire lexique

Pure Pascal en interne : Gestion dynamique de la mémoire


Contrairement à de nombreux autres systèmes Pascal, avec Pure Pascal, vous n'avez pas à spécifier la taille de la zone de mémoire dynamique (le soi-disant tas). Au lieu de cela, le tas est étendu si nécessaire en demandant des blocs de mémoire volumineux (32 Ko) au système d'exploitation. Si un tel bloc redevient complètement vide en appelant Dispose, Freemem ou Release, le bloc est retourné au système d'exploitation.

Comportement en cas de mémoire insuffisante

La bibliothèque signale normalement une erreur d'exécution immédiatement si un appel à New ou Getmem ne peut pas être satisfait en raison d'une mémoire insuffisante.

Toutefois, vous pouvez modifier ce comportement en pointant la variable de pointeur HeapError dans l'unité SYSTEM vers une routine que vous avez déclarée. Cette routine est appelée lorsque la mémoire est épuisée. Il doit être déclaré comme suit:

function HeapFunc(Size: longint): integer;
Le paramètre Size représente la taille de la zone mémoire demandée.

La fonction peut maintenant essayer, par exemple, de libérer de la mémoire qui n'est pas absolument nécessaire. Il utilise la valeur de retour pour signaler les réussites qu'il a eues. Trois valeurs de retour différentes sont possibles:

Donc, si un appel à New ou Getmem dans votre programme doit toujours renvoyer nil s'il n'y a plus de mémoire, vous devez déclarer une fonction d'erreur de tas, par exemple comme ceci:
function HeapFunc(Size: longint): integer;
begin
     HeapFunc := 1;
end;
et installez-le au début de votre programme dans la variable HeapError:
...
begin     { Début du programme principal }
    HeapError := @HeapFunc;
     ...
end.

Sommaire lexique


Copyright © 2021 par Albatros Concept (Bruno Aubin)