Table des matières:
Définition - Que signifie Call Stack?
Une pile d'appels, en C #, est la liste des noms des méthodes appelées au moment de l'exécution depuis le début d'un programme jusqu'à l'exécution de l'instruction en cours.
Une pile d'appels est principalement destinée à garder une trace du point auquel chaque sous-programme actif doit retourner le contrôle lorsqu'il a terminé son exécution. La pile d'appels sert d'outil pour déboguer une application lorsque la méthode à tracer peut être appelée dans plusieurs contextes. Cela constitue une meilleure alternative que l'ajout de code de suivi à toutes les méthodes qui appellent la méthode donnée. Chaque fois qu'une exception est levée n'importe où dans le code utilisateur, le Common Language Runtime (CLR) déroule la pile d'appels et recherche le bloc catch pour déterminer le type d'exception spécifique. S'il n'y a pas de gestionnaire approprié, CLR mettra fin à l'application. La pile d'appels est donc utilisée pour indiquer au pointeur d'exécution où aller ensuite.
Techopedia explique Call Stack
La pile d'appels est organisée en «pile», une structure de données en mémoire pour stocker les éléments de la manière du dernier entré, premier sorti, de sorte que l'appelant du sous-programme pousse l'adresse de retour sur la pile et le sous-programme appelé, après avoir terminé, sort l'adresse de retour de la pile d'appels pour transférer le contrôle à cette adresse.
En C #, toute application commence par une méthode "principale", qui à son tour appelle d'autres méthodes. À chaque appel à une méthode, la méthode est ajoutée en haut de la pile et supprimée de la pile à son retour à l'appelant. En outre, la portée d'une variable déclarée dans un bloc est déterminée à partir du moment où sa valeur est poussée sur la pile (dans le cadre de la pile d'appels) jusqu'à ce que l'exécution quitte le bloc lorsque la variable et la pile d'appels sont extraites de la pile. Ainsi, la pile conserve à la fois les variables locales (types de valeurs) et la pile des appels (trames de pile), dont la taille indique la complexité d'un programme.