Écrivez une application Delphi qui ne bloque pas l'allocation des ressources
La clé est de garantir que si des ressources sont allouées dans le programme, même en cas d'échec, le programme
Le programme devrait également être capable de libérer les ressources occupées.
Les fichiers, la mémoire, les ressources et les objets WINDOWS doivent être ajoutés de temps en temps.
Veillez à ce que les ressources soient libérées. Dans l'exemple de code de contrôle d'événement suivant
La mémoire est allouée en premier, puis une erreur se produit, l'empêchant de s'exécuter.
Code de programme pour libérer de la mémoire :
PROcédureTForm1. ButtonlClick (Expéditeur : Tobject
);
Var
Pointeur1 : pointeur ;
Entier1,Numzéro : Entier ;
commencer
Numéro zéro : Κ0 ;
GetMem(Pointer1, 1024); {Allouer 1 Ko de ressources mémoire}
Integer1 : Κ5divNumzero ; {Cette phrase génère une erreur de division
erreur}
FreeMem (Pointer1, 1024); {Cette phrase ne sera pas exécutée ici
OK}fin ;
Bien que la plupart des erreurs ne soient pas aussi évidentes, l'exemple ci-dessus contient d'importantes
Un point : lorsqu'une erreur se produit, l'exécution du programme sort du module et les ressources suivantes sont libérées.
Le code du programme n'est plus exécuté. Pour garantir que FreeMem dans l'exemple ci-dessus peut
Pour libérer les ressources mémoire occupées par GetMem, il faut mettre le code dans une ressource
module de protection.
Voici le format d’un module courbe de protection des ressources :
{Allocation des ressources}
essayer
{Utilisation des ressources}
enfin
{Libération des ressources}
fin;
L'essai ci-dessus. . . Le module final permet au programme de toujours exécuter fi
??enfin n'importe quel code de programme dans la section, même s'il y a une erreur dans le module protégé
produit en. Lorsqu'un morceau de code dans la section try provoque une erreur lors de son exécution, exécutez
La ligne passera directement à la section finale si aucune erreur ne se produit lors de l'exécution, alors
Les programmes sont exécutés dans l'ordre normal.
Dans l'exemple de code de contrôle d'événement suivant, la mémoire est allouée en premier, puis
Une erreur s'est produite, mais le code du programme qui a libéré la mémoire a quand même été exécuté :
ProcédureTForm1. Button1Click (Expéditeur : Tobject
);
Var
Pointeur1 : pointeur ;
Entier1,Numzéro :Entier ;
commencer
Numéro zéro : Κ0 ;
GetMem(Pointer1, 1024); {Allouer 1 Ko de ressources mémoire}
essayer
Integer1 : Κ5divNumzero ; {Cette phrase génère une erreur de division
erreur}
enfin
FreeMem(Pointer1,1024);{Ici, cette phrase sera toujours exécutée
D'ACCORD}
fin;
fin;
Comment s'assurer que le programme libère les ressources utilisées est une question importante en programmation.
Il s’agit d’une question très importante à laquelle il faut s’entraîner et prêter attention lors de la programmation.