Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> Computer Programming Languages >> .

Motivi per Stack Overflow

stack overflow è un errore di applicazione che si verifica ogni volta che troppa memoria viene allocata sulla chiamata pila di esecuzione di un'applicazione. Nel sistema operativo , questa chiamata stack è letteralmente una "pila di memoria" a cui le variabili di programmazione e le chiamate di procedura sono memorizzati per l'utilizzo nell'ambito di applicazione corrente di esecuzione . Le cause primarie di overflow dello stack sono ricorsione infinita e variabili di stack che sono troppo grandi . Una terza causa , anche se meno probabile , può verificarsi a causa di perdita del puntatore dello stack in memoria . Infinite ricorsione

Infinite ricorsione provoca lo stack di chiamate a traboccare nella maggior parte dei linguaggi di programmazione . Quando una procedura o funzione chiama un'altra procedura o funzione, le precedenti informazioni sullo stack di chiamate viene mantenuto e le informazioni dalla nuova funzione viene allocato in cima alla pila . Quando una funzione che richiama sé stesso ricorsivamente senza un mezzo chiaro di cessazione , l'applicazione verrà allocare più memoria sullo stack continuamente fino allocare più memoria di quella disponibile sullo stack , causando un overflow dello stack .
Molto grandi variabili stack

variabili dichiarate sullo stack includono variabili di input in un procedimento , il valore di ritorno per la procedura e le eventuali variabili membro utilizzati per i calcoli . Ciò può provocare un overflow dello stack se la dimensione combinata di chiamata di procedura e le sue variabili è maggiore della memoria stack disponibile .
Stack Pointer Perdita

Pila perdita puntatore si verifica ogni volta che la memoria sullo stack viene danneggiato . Ciò può accadere , cercando di accedere alle funzioni o ai dati in memoria che in precedenza sono stati liquidati , per esempio. Se questo accade , una singolare forma di ricorsione si verifica , con la conseguente applicazione cercando di trovare le informazioni di base di un dato pezzo di dati . Poiché le informazioni tecnicamente non esiste, il comportamento dell'applicazione diventa indefinito , e una serie infinita di chiamate di funzione diventano possibili . Questa limitazione si verifica principalmente solo a basso livello, linguaggi orientati agli oggetti , come C + + .

 

Programmazione © www.354353.com