Skip to main content

POU: CheckPointer

Funzione di monitoraggio per puntatori (CheckPointer)

Utilizzare questa funzione per monitorare l'accesso alla memoria dei puntatori in modalità runtime. Al contrario di altri funzioni di monitoraggio, non esiste un suggerimento standard per l'attuazione di CheckPointer. È necessario definire un'implementazione in base alle proprie esigenze.

Il CheckPointer la funzione dovrebbe verificare se il puntatore passato fa riferimento o meno a un indirizzo di memoria valido e se l'orientamento dell'area di memoria di riferimento corrisponde o meno al tipo di variabile a cui si riferisce il puntatore. Se entrambe le condizioni sono soddisfatte, viene restituito il puntatore. In caso contrario, la funzione dovrebbe completare un'appropriata gestione degli errori.

Attenzione

Per ottenere la funzionalità per le funzioni di monitoraggio, non modificare la parte della dichiarazione. Tuttavia, è consentito aggiungere variabili locali.

Importante

Non si verifica una chiamata implicita alla funzione di monitoraggio per THIS puntatore e SUPER puntatore.

Importante

Nella versione del compilatore 3.5.7.40 e successive, il CheckPointer colpisce anche REFERENCE variabili come le variabili puntatore.

Esempio 538. Modello

Dichiarazione:

//  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

Attuazione: (incompleta)

//  Not a standard implementation. Insert your code here.
CheckPointer := ptToTest;
. Quando la funzione viene chiamata, riceve i seguenti parametri di input:
  • ptToTest: Indirizzo di destinazione del puntatore

  • iSize: Dimensione della variabile di riferimento; il tipo di dati di iSize deve essere compatibile con INT e coprono l'ambito dimensionale delle variabili

  • iGran: Granularità della dimensione di riferimento; questo è il più grande tipo di dati non strutturati contenuto nelle variabili referenziate; il tipo di dati di iGran deve essere compatibile con INT

  • bWrite: Tipo di accesso (TRUE = accesso in scrittura, FALSE = accesso in lettura); il tipo di dati di bWrite deve essere BOOL

Quando il risultato del controllo è positivo, viene restituito il puntatore invariato (ptToTest).