Datamaskin
  | Hjem | Hardware | Nettverk | Programmering | Software | Feilsøking | Systems | 
Programmering  
  • C /C + + Programming
  • Computer Programmeringsspråk
  • Delphi Programming
  • Java Programming
  • JavaScript Programmering
  • PHP /MySQL programmering
  • Perl Programming
  • Python Programming
  • Ruby Programming
  • Visual Basics Programming
  •  
    Datamaskin >> Programmering >> Computer Programmeringsspråk >> Content
    Hva er Stack Overflow
    ? En stack overflow er en type programmering feil som oppstår når et program forsøker å tildele mer minne på samtalen stabelen enn det som er tilgjengelig. Det er en potensielt alvorlig feil som forårsaker uakseptable programmet til å krasje og er vanligvis et resultat av en av to design feil . Stable-

    Stabelen refererer til en del av minnet som brukes til å lagre informasjon om funksjonene til et program . Størrelsene og tekniske detaljer på bunken vil være variere avhengig av programmeringsspråk, kompilator , operativsystem og prosessor type, og disse detaljene er vanligvis skjult for programmerer i de fleste høyere nivå språk.
    Eksempel stable

    Betrakt følgende eksempel i pseudokode : en

    funksjon et {1 . ringe funksjon B.2 . ringe funksjon c . }

    funksjon b {1 . ringe funksjon C.2 . Skriv ut Spot. }

    Funksjon c {1 . Skriv ut Run . }

    Siden hver funksjon kan kalle andre funksjoner , finnes bunken for å holde oversikt over hvor i den overordnede funksjonen til å fortsette etter at et barn funksjon kommer tilbake . Dette eksemplet , hvis stoppet inne funksjon c , kan ha en stabel som ser omtrent slik ut : en

    > A1 --- > B1 -------- > C1
    < p > Siden den første linjen i funksjon A ringer funksjon B , og den første linjen av funksjon B kaller funksjonen C. Etter funksjon C vil fullføre , vil programmet fortsette tilbake opp i kjeden , kjører B2 og til slutt A2 .

    Infinite Rekursjon

    stack overflow oppstår når et program prøver å lagre for mye informasjon på stakken . Den vanligste årsaken til en stack overflow er et design feil kalles uendelig rekursjon . Betrakt følgende eksempel i pseudokode : en

    funksjon A { 1 . ringe funksjon A. }

    Og den resulterende stack : en

    - > A1 --- > A1 -------- > A1 ------- ------- > A1 ( og så videre)

    de er kjent med programmering vil gjenkjenne dette som en variant av den uendelig loop, bortsett fra, snarere enn å kjøre for alltid , vil dette programmet slutt konsumere alt minnet på stakken , noe som resulterer i en krasj og en stack overflow feil .
    Prevention

    stakkoverflytfeil oppstår vanligvis når du forsøker å gjennomføre rekursive algoritmer , og nøkkelen å unngå de fleste feil er å sikre at følgende gjelder for alle rekursive implementasjoner : den rekursive funksjonen må inneholde en exit tilstand som ikke skaper et lag av rekursjon , og den rekursive funksjonen må utformes slik at hvert lag av rekursjon lagt må bringe funksjonen nærmere exit tilstand .
    store lokale variabler

    annen , mye sjeldnere årsak til stakkoverflytfeil er erklæringen av store lokale variabler , vanligvis i form av arrays som inneholder hundretusener eller millioner, av elementer . Den enkleste måten å unngå stack overflow i denne situasjonen er å bruke pekere og dynamisk minne allokering å unngå erklære dataene på bunken når slike minne intensive operasjoner er etterlyste.

    früher :

     Weiter:
      Relatert Artike
    ·Hvordan finne antall knapper i en WPF Toolbar 
    ·Hvordan bruke Oracle SQL Loader til Parse XML 
    ·Hvordan endre egenskaper i en CSS -mal 
    ·Fordelene av flere arv 
    ·Hvordan gjør jeg en knapp vises basert på angitte dat…
    ·Slik automatiserer Visio Med Powershell 
    ·Hvordan sette opp MIT Scheme for SICP 
    ·Heltallsprogrammering & stykkevis lineære funksjoner 
    ·Tilbakekallsfunksjon 
    ·Hvordan sette bilde bredde og høyde ved hjelp av HTML …
      Anbefalte artikler
    ·Hvordan å se feil i Python 
    ·Hvordan legge til filmer i Windows Media Player-bibliot…
    ·Slik formaterer du en variabel med én desimal i Java 
    ·Hvordan legge til Slow Motion til WMP 
    ·Hvordan bruke et Autonummer i Visual Basic 
    ·Hvordan sjekke en Radio Button List i Vb.net 
    ·Hvordan Les inntasting Fra DOSBox Med Perl 
    ·Hvordan finne en String i Java 
    ·Hvordan konvertere en streng til en desimal i PHP 
    ·Slik Send e-post til VB.Net System Mail 
    Copyright ©  Datamaskin  http://www.datamaskin.biz/