Care este stiva de apel

Odată ce a existat o declarație goto, iar programul arata ca acest lucru

Pentru a opri în timpul execuției (pe un punct de întrerupere sau arunca o excepție) pentru a afla ce funcții (și, eventual, un număr de linii de cod) a existat o oprire, cu cuiburile.


urme stiva de apel de excepție:

Engleză nu este foarte bine știu,
Și aici, în limba engleză, a avut doar să verificați această casetă pentru a utiliza.

Programator „si cu cruci,“ și nu numai

stiva de apel - acest apel stivă, caracteristica hardware a tuturor majore procesoare.

Aici vom intra în funcția principală (). În acest moment, variabila z apare în memorie. Și apoi foo () - există, de asemenea, o variabila y. Și apoi lăsați foo - y dispare. Ce facem? Sau la sfârșitul adăuga una sau mai multe variabile locale, sau în același scop, ștergeți-le. Ce este o structură de date adecvată pentru acest lucru? Stivă: adăuga, șterge, de la sfârșitul anului. Toate acestea, amintesc x86 implementat în hardware-ul, un segment, două registre (ESP = 32-bit stivă pointer și pointer de bază EBP = 32 biți) și mai multe comenzi (de push, pop, apel, ret ...).

Variabilele locale care fac parte din aceeași funcție, numit un cadru stivă. În același interval de timp al unei funcții pot fi mai multe, dacă se solicită, fie direct, fie indirect - ca o bară () funcție.

Cel mai cunoscut-model, puteți apela, „relaxare“ stivă cadru cu cadru, pentru a vedea ce fel de funcție este cauzat. Aceasta este afișată în fereastra Call Stack. Ca un acces de depanare este foarte lent, de obicei afiseaza doar partea de sus a stivei. Mai mult decât atât, arătând oriunde pe stiva de apel, putem vedea variabilele locale ale instanței funcției.

Având în vedere că stiva hardware-ul, nu se poate extinde; numai înainte de începerea punctului de program / flux, cât de mult de memorie este de ajuns pentru noi. Și astfel o parte din eroare „Stack Overflow“.