Dator
 |  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programmering
  • C /C + + -programmering
  • Computer Programspråk
  • Delphi Programmering
  • Java Programming
  • JavaScript programmering
  • PHP /MySQL Programmering
  • perl Programmering
  • python Programming
  • Ruby programmering
  • Visual Basics Programmering
  • * Dator Kunskap >> Programmering >> Computer Programspråk >> Content

    Vad är Stack Overflow

    ? En stack overflow är en typ av programmeringsfel som uppstår när ett program försöker att allokera mer minne på anropsstacken än finns . Det är ett potentiellt allvarligt fel som orsakar den felande programmet att krascha och är oftast resultatet av ett av två misstag i designen . Stacken

    stapeln avser en del av minnet som används för att lagra information om funktionerna i ett program . De storlekar och tekniska detaljer i stacken kommer variera beroende på programmeringsspråk , kompilator , operativsystem och processortyp , och dessa uppgifter är vanligen dolda programmeraren i de flesta högre nivå språk .
    Exempel stack

    Betrakta följande exempel i pseudokod :

    funktion en { 1 . anropa funktionen b.2 . anropa funktionen c. . }

    funktion b { 1 . anropa funktionen c.2 . Skriv Spot . }

    Funktion c { 1 . Upplaga . }

    Eftersom varje funktion kan anropa andra funktioner , finns stacken för att hålla reda på var i den överordnade funktionen för att fortsätta efter en avkastning barnets funktion . Detta exempel , om stoppad insida funktion c , kan ha en stack som ser ut ungefär så här :

    > A1 --- > B1 -------- > C1

    Sedan den första raden i funktionen A samtal funktion B , och den första raden i funktionen B anropar funktionen C. Efter funktionen C kommer att avsluta , fortsätter programmet tillbaka upp i kedjan , kör B2 och slutligen A2 .

    oändlig rekursion

    en stack overflow inträffar när ett program försöker att lagra för mycket information på stacken . Den vanligaste orsaken till en stack overflow är en design fel kallas oändlig rekursion . Betrakta följande exempel i pseudokod :

    funktion A { 1 . anropa funktionen A. }

    Och den resulterande stacken :

    - > A1 --- > A1 -------- > A1 ------- ------- > A1 ( och så vidare ) katalog

    de som är bekanta med programmering kommer att känna igen detta som en variant på oändlig slinga , förutom , i stället köra för evigt , kommer detta program att konsumera så småningom alla minnet på traven , vilket resulterar i en krasch och en stack overflow fel .
    förebyggande

    stack overflow fel uppstår i allmänhet när man försöker implementera rekursiva algoritmer , och nyckeln att undvika de flesta felen är att se till att följande gäller för alla rekursiva implementationer : den rekursiv funktion måste innehålla en exit tillstånd som inte skapar ytterligare ett lager av rekursion , och rekursiv funktion skall vara konstruerade så att varje skikt av rekursion tillsätts skall föra funktionen närmare exit tillstånd .
    stora lokala variabler

    annan , mycket mer sällsynt orsak till fel stackspill är förklaringen av stora lokala variabler , vanligtvis i form av matriser innehållande hundratusentals eller miljontals, element . Det enklaste sättet att undvika stackspill i denna situation är att använda pekare och dynamisk minneshantering för att undvika att förklara data på stacken när sådana minneskrävande funktioner kallas för . Addera

    Tidigare:

    nästa:
    relaterade artiklar
    ·Vad är en Ascx Arkiv
    ·Vad är meningen med skriptspråk
    ·Frågor som springa snabbare i rumsliga databaser
    ·Så för att ändra färgen på rullningslisten i Micro…
    ·Hur noggrann kontroll Web User
    ·Hur man lär sig datorn programmering
    ·Hur Pass en variabel till HTA
    ·Den funktion F- statistik i MATLAB
    ·Vad är en dator programmeringsspråk
    ·Hur göra en Flash Escape Game
    Utvalda artiklarna
    ·Vilka är de begrepp som ofta används i Visual Basic
    ·Ta bort dubbletter av filer i Java
    ·Hur man gör VBA inmatningsrutor
    ·Hur man skapar Datetime Med Int
    ·Hur dölja en kolumn Från FlexGrid i Visual Basic 6
    ·Hur man använda den seriella porten i Visual Basic
    ·Hur Exportera till Access från Visual Basic
    ·Hur får Image Height & Width i PHP
    ·Konvertera Enum till String i Java
    ·Hur du ändrar JDK i BEA WebLogic 8.1
    Copyright © Dator Kunskap http://www.dator.xyz