Skip to main content

POU: CheckPointer

Fonction de surveillance des pointeurs (CheckPointer)

Utilisez cette fonction pour surveiller l'accès mémoire des pointeurs en mode d'exécution. Contrairement à d'autres fonctions de surveillance, il n'existe pas de suggestion standard pour l'implémentation de CheckPointer. Vous devez définir une implémentation en fonction de vos propres besoins.

le CheckPointer La fonction doit vérifier si le pointeur passé référence ou non une adresse mémoire valide, et si l'orientation de la zone mémoire référencée correspond ou non au type de variable auquel le pointeur se réfère. Si les deux conditions sont remplies, le pointeur est renvoyé. Si ce n'est pas le cas, la fonction doit effectuer une gestion d'erreur appropriée.

Attention

Pour obtenir la fonctionnalité de surveillance des fonctions, ne modifiez pas la partie déclaration. Cependant, vous êtes autorisé à ajouter des variables locales.

Important

Aucun appel de fonction de surveillance implicite ne se produit pour THIS pointeur et SUPER pointeur.

Important

Dans la version 3.5.7.40 et supérieure du compilateur, le CheckPointer affecte également REFERENCE variables identiques aux variables de pointeur.

Exemple 538. Modèle

Déclaration:

//  Automatically generated code: DO NOT EDIT
FUNCTION CheckPointer : POINTER TO BYTE
VAR_INPUT
        ptToTest : POINTER TO BYTE;
        iSize : DINT;
        iGran : DINT;
        bWrite: BOOL;
END_VAR

Implémentation : (incomplète)

//  Not a standard implementation. Insert your code here.
CheckPointer := ptToTest;
. Lorsque la fonction est appelée, elle reçoit les paramètres d'entrée suivants :
  • ptToTest: Adresse cible du pointeur

  • iSize: Taille de la variable référencée ; le type de données de iSize doit être compatible avec INT et couvrir la portée dimensionnelle des variables

  • iGran: Granularité de la taille référencée ; il s'agit du plus grand type de données non structurées contenu dans les variables référencées ; le type de données de iGran doit être compatible avec INT

  • bWrite: Type d'accès (TRUE = accès en écriture, FALSE = accès en lecture); le type de données de bWrite doit être BOOL

Lorsque le résultat de la vérification est positif, le pointeur inchangé est retourné (ptToTest).