| Home  | Casa  | Hardware  | Networking  | Programmazione  | Software  | Domanda  | Sistemi  |   
Programmazione  
  • C /C + + Programming

  • Computer Programming Languages

  • Delphi Programming

  • Java Programming

  • Programmazione Javascript

  • PHP /MySQL Programmazione

  • Perl Programming

  • Python Programming

  • rubino Programmazione

  • Nozioni di base di Visual Programming
  •  
    Conoscenza Informatica >> Programmazione >> Computer Programming Languages >> Content
    Che cosa è Stack Overflow ?
    Un overflow dello stack è un tipo di errore di programmazione che si verifica quando un programma tenta di allocare più memoria sullo stack di chiamate di quella disponibile . E 'un errore potenzialmente grave che causa il programma incriminato di crash e di solito è il risultato di uno dei due errori di progettazione . La pila

    La pila si riferisce ad una sezione di memoria che viene utilizzata per memorizzare le informazioni sulle funzioni di un programma . Le dimensioni e dettagli tecnici della pila saranno variano a seconda del linguaggio di programmazione , compilatore , il sistema operativo e il tipo di processore , e questi dettagli sono generalmente nascosti al programmatore nella maggior parte dei linguaggi di alto livello .
    Esempio Stack

    Si consideri il seguente esempio in pseudocodice :
    funzione

    a { 1 . funzione b.2 chiamare . chiamare la funzione c . }

    funzione b { 1 . funzione c.2 chiamare . Stampa Spot . }

    Funzione c { 1 . Tiratura . }

    Dal momento che ogni funzione può chiamare altre funzioni , la pila esiste per tenere traccia di dove nella funzione di genitore di continuare dopo che un bambino funzione restituisce. Questo esempio , se si fermò all'interno funzione c , può avere uno stack che sembra qualcosa di simile :

    > A1 ---> B1 -------- > C1
    < p > Dal momento che la prima riga della funzione Una funzione chiamate B , e la prima linea della funzione B chiamate di funzione C. Dopo la funzione C si concluderà , il programma continuerà il backup della catena , in esecuzione B2 e infine A2 .

    Infinite ricorsione

    un overflow dello stack si verifica quando un programma tenta di archiviare troppe informazioni nello stack. La causa più comune di un overflow dello stack è un errore di progettazione chiamato ricorsione infinita . Si consideri il seguente esempio in pseudocodice :
    funzione

    A { 1 . funzione A. }

    E la pila risultante chiamare :

    - > A1 ---> A1 -------- > A1 ------- ------- > A1 (e così via ) per

    Coloro che hanno familiarità con la programmazione computer riconoscerà questo come una variazione sul ciclo infinito , ad eccezione , piuttosto che correre per sempre , questo programma finalmente consumare tutto la memoria sullo stack , causando una caduta e un errore di overflow dello stack .
    prevenzione

    errori di overflow dello stack in genere si verificano quando si tenta di implementare algoritmi ricorsivi , e la chiave per evitare la maggior parte degli errori è quello di garantire che la seguente è vero per tutte le implementazioni ricorsive : la funzione ricorsiva deve contenere una condizione di uscita che non crea un altro strato di ricorsione , e la funzione ricorsiva deve essere progettato in modo che ogni strato di ricorsione aggiunto deve portare la funzione più vicino alla condizione di uscita .
    grandi variabili locali

    Un altro , molto più rara causa di errori di overflow dello stack è la dichiarazione di variabili locali di grandi dimensioni , di solito in forma di matrici contenenti centinaia di migliaia, o milioni , di elementi . Il modo più semplice per evitare overflow dello stack in questa situazione è quello di utilizzare i puntatori e l'allocazione dinamica della memoria per evitare di dichiarare i dati nello stack quando tali operazioni intensivo della memoria si impone.

    Previous :

    next :
      Articoli Correlati
    ·Che cos'è il protocollo Incompatibilità 
    ·Come modificare un file OST a PST 
    ·Vantaggi e svantaggi del senza tipo Linguaggi di Progra…
    ·Come convertire Inglese a MATLAB 
    ·Come generare un numero intero casuale a Ada 
    ·Common Lisp e rendering HTML motore di associazione 
    ·Come compilare il TextPad 5 
    ·Come per l'interfaccia C a MATLAB 
    ·Common Language Runtime debug degli errori 
    ·Come compilare il codice D su Vim 
      Articoli in evidenza
    ·Struts Validator Regole 
    ·Come convertire i codici pseudo a diagrammi di flusso 
    ·Come fare Nastri in CSS3 
    ·Come utilizzare Unicode in C + + Programmi 
    ·Come convertire Enum di String in Java 
    ·Come notificare a un utente di servizio Terminal su VB.…
    ·Come compilare in Java 
    ·Come installare GAPro nel JW Player 
    ·Come utilizzare un'istruzione switch in Perl 
    ·Come eliminare una variabile in una funzione Usare Pyth…
    Copyright © Conoscenza Informatica http://it.wingwit.com