Stack overflow er en programfeil som oppstår når for mye minne er tildelt på run-time samtale stabel av et program. I operativsystemet , er denne samtalen stabelen bokstavelig talt en " stabel med minne" på hvilken programmering variabler og prosedyrekall er lagret for bruk i dagens omfang av gjennomføring . De viktigste årsakene til stack overflow er uendelig rekursjon og stable variabler som er for store . En tredje årsak, selv om mindre sannsynlig kan oppstå på grunn av tap av stabelen pekeren i minnet. Infinite Rekursjon
Infinite rekursjon fører samtalen stack til å renne over i de fleste programmeringsspråk . Når det er nødvendig eller funksjonskall en annen fremgangsmåte eller funksjon , er tidligere informasjon om anropet stabel opprettholdes og informasjonen fra den nye funksjonen fordeles på toppen av stabelen . Når en funksjon som kaller seg rekursivt uten en klar middel til opphør , vil programmet tildele mer minne på stakken kontinuerlig til mer minne er tildelt enn tilgjengelig på stakken , noe som resulterer i stack overflow .
Very store stack variabler
variabler som deklareres på stakken inkluderer input variabler inn i en prosedyre , returverdien for inngrepet og eventuelle medlem variabler som brukes for beregninger. Dette kan resultere i stack overflow dersom den kombinerte størrelsen på procedure call og variablene er større enn tilgjengelig stabelen minne.
Stack Pointer tap
Stack pekeren tap oppstår når minnet på stakken blir ødelagt . Dette kan skje ved å prøve å få tilgang til funksjoner eller data i minnet som tidligere ble fjernet , for eksempel. Hvis dette skjer , oppstår en unik form av rekursjon , noe som resulterer i anvendelsen prøver å finne ut basen informasjon for et gitt dataelement . Fordi informasjonen teknisk sett ikke finnes, blir virkemåten til programmet udefinert , og en endeløs strøm av funksjonskall blitt mulig. Denne begrensningen skyldes først og fremst bare i lavt nivå , objektorienterte språk, som C + + .