Cuprins:
Definiție - Ce înseamnă Call Stack?
Un stack de apeluri, în C #, este lista de nume ale metodelor apelate la timpul de execuție de la începutul unui program până la execuția instrucțiunii curente.
Un stack de apeluri este destinat în principal să țină evidența punctului către care fiecare subrutină activă ar trebui să returneze controlul atunci când termină executarea. Stiva de apeluri funcționează ca un instrument de depanare a unei aplicații atunci când metoda de urmărit poate fi apelată în mai multe contexte. Aceasta reprezintă o alternativă mai bună decât adăugarea codului de urmărire la toate metodele care apelează la metoda dată. Ori de câte ori o excepție este aruncată oriunde în codul utilizatorului, Common Language Runtime (CLR) va anula stiva de apeluri și va căuta blocul de captură pentru a determina tipul de excepție specific. Dacă nu există un operator adecvat, CLR va încheia cererea. Stilul de apeluri este, prin urmare, utilizat pentru a indica indicatorul de execuție unde trebuie să urmeze.
Techopedia explică Call Stack
Stiva de apeluri este organizată ca „stivă”, o structură de date în memorie pentru stocarea articolelor într-o manieră finală-în-prima, astfel încât apelantul subrutinei împinge adresa de retur pe stivă și subrutină numită, după terminare, deschide adresa de retur de pe stiva de apeluri pentru a transfera controlul la acea adresă.
În C #, orice aplicație începe cu o metodă „principală”, care la rândul ei numește alte metode. La fiecare apel către o metodă, metoda este adăugată în partea de sus a stivei și este eliminată din stivă la întoarcerea la apelant. De asemenea, domeniul de aplicare al unei variabile declarate într-un bloc este determinat din momentul în care valoarea sa este împinsă pe stivă (ca parte a stivei de apeluri) până când execuția părăsește blocul atunci când variabila și stiva de apeluri sunt scoase din stivă. Astfel, stiva menține atât variabile locale (tipuri de valori), cât și stack stack (cadre de stivă), a căror dimensiune indică complexitatea unui program.