Une application ou une bibliothèque s'articule autour de types complexes tels que des programmes, des blocs fonction, des listes de variables globales, des méthodes, des actions, des fonctions, des structures, etc. Au sein de chacun de ces types, des variables peuvent être définies.
Lorsqu'un type complexe est appelé, par exemple une fonction, une méthode, une action, une opération Get ou Set de propriété ou une transition, l'exécution nécessite la mémoire de la pile. Les informations de taille de pile peuvent être utilisées pour identifier le type complexe qui consomme une quantité trop importante de mémoire de la pile.
Pour un type complexe tel qu'une fonction ou une méthode, les tailles des variables s'additionnent. Lors de l'appel du type complexe, la taille mémoire est allouée par-dessus la pile et les valeurs d'entrée y sont copiées. Pendant l'exécution du code de la fonction ou de la méthode, ces valeurs de mémoire sont utilisées.
Exemple
Exemple de calcul de la métrique Stack Size :
FUNCTION_BLOCK FB_XXX
VAR
fbComplex: FB_Test; // 20 byte
END_VAR
// method call of FB_XXX
Meth1(TRUE);
METHOD Meth1
VAR_INPUT
xTest1: BOOL;
END_VARVAR
iTest2: INT;
END_VAR
METHOD METH2
VAR_INPUT
fbComp: FB_XXX;
END_VAR
Résultats de la métrique Stack Size
Stack Size (METH1) = 8
Stack Size (METH2) = 32