Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
 zásobník volaní , najčastejšou príčinou pretečeniu zásobníka , má zoznam návratových adries pre jednotlivé funkcie alebo volanie metódy . Keď začne program , zásobník volaní je prázdny , a potom , keď sa prvýkrát volaná funkcia , adresa riadku bezprostredne po volaní funkcie dostane tlačil na zásobníku . Ak funkcia skončí , spiatočná adresa dostane vyskočila z kôpky a vykonávanie pokračuje na tejto adrese . Zásobník rozširuje a zrúti sa v závislosti na počte vnorených volaní funkcií . 
 Rekurzia 
 
rekurzia nastáva , keď funkcia volá seba . Zoberme si nasledujúci kód : Spojené
Funkčné countNodes ( uzlov ) pre každú childNode v nodenodeCount + = 1countNodes ( childNode ) DalšíKonec funkcie klipart
 Použitie nejakú stromovú štruktúru ako XML dokumentu , tento kód sa počíta počet uzlov stromu nájdených v rámci daného uzla . Každé dieťa uzol dostane počíta , potom je odovzdaný do rovnakej funkcie počítať svoje podriadené uzly . Tento postup sa opakuje , až kým dieťa nemá žiadne deti 
 
 Predpokladajme , že programátor napísal uzol namiesto podriadený uzol takto : . 
 
 Funkcia countNodes ( uzol ) pre každú childNode v nodenodeCount + = 1countNodes ( Node ) DalšíKonec funkcie 
 
 V tomto prípade bude funkcia volať donekonečna a pretečenie zásobníka dochádza . 
 Skrytá Rekurzia 
 
 Vo väčšine prípadov , vývojári nie sú zámerne písať rekurzívne kódu , ale rekurzia môže dôjsť v jemnejších spôsobov . Zoberme si tieto tri funkcie : 
 
 Funkcia loadAccount ( ) LoadMainAccount ( ) loadTransactions ( ) End funkcie 
 
 Funkcia loadMainAccount ( ) loadAssociatedAccounts ( ) end funkcie 
 
funkcie loadAssociatedAccounts ( ) loadAccount ( ) end funkcie celým
 V tomto prípade , rekurzia dochádza nepriamo , keď funkcia volá inú funkciu , ktorá volá nechtiac prvú funkciu . Výsledkom môže trvať trochu dlhšie , ale výsledkom je pretečenie zásobníka . 
 Veľké Parametre 
 
 Okrem sledovania funkcie volania , návratové body , zásobník môže tiež držať iné dáta . Väčšina jazyky používajú zásobník držať parametre funkcií a títo sú zvyčajne len ukazovatele adresa lokalít parametrov . Niektoré jazyky tlačiť parametrov hodnotou na zásobníku , a to môže trvať podstatne viac miesta . Predvolenú veľkosť zásobníka pre väčšinu jazykov v rozmedzí od 512 kB do 1 MB , takže veľké parametre odovzdávané hodnotou mohla občas spôsobiť pretečenie zásobníka . Ak je potreba prejsť veľké parametrov hodnotou , obráťte sa na referenčnú príručku jazyka zistiť , ako zvýšiť stack premenné . 
 Instance 
 
 Premenné inštancie sú tie vložené vnútri funkcie . Napríklad : 
 
 Funkčná vzorka ( ) N = getCounter ( ) Return n * 12End funkcia 
 
 Premenná n je premenná inštancie , pretože existuje iba , keď vzorka funkcie vykonáva . V mnohých jazykoch , n dostane tlačil do zásobníka , potom vyskočila off , kedy funkcia ukončí . To funguje dobre pre jednoduché premenné , ako sú celé čísla a znaky , ale môže naplniť zásobník pri použití veľké pole . Keď sa to stane problém , zvážte použitie vstavané dátové štruktúry , ako sú reťazce alebo zoznamy . Tieto štruktúry sa zvyčajne alokovať pamäť na halde , samostatný , oveľa väčšie oblasti pamäte .