Stack overflow: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 24:
 
==Variabili di stack molto grandi==
L'altra causa principale dello ''stack overflow'' è il tentativo di allocare più memoria nello stack di quella che è disponibile. Questo avviene tipicamente quando si crea un [[array]] di [[Variabile (informatica)#Visibilità di una variabile|variabili locali]] molto grande. Per questo motivo gli array più grandi di qualche [[kilobyte]] dovrebbero essere allocati [[allocazione dinamica della memoria|dinamicamente]] anziché allocarli come variabili locali<ref name="onlamp">{{cite web
| last = Feldman
| first = Howard
Riga 31:
| date = 2005-11-23 }} </ref>.
 
== Cause che pososno ridurre la dimensione dello stack disponibile e quindi rendere più probabile uno ''stack overflow'' ==
Gli stack overflow sono aggravati da qualsiasi cosa riduca la dimensione effettiva dello stack di un programma. Ad esempio un programma che viene eseguito come [[thread]] singolo potrebbe funzionare correttamente, ma se lo stesso programma viene eseguito con thread multipli si verifica un crash del programma. Ciò avviene perché molti programmi che usano i thread hanno a disposizione uno stack più piccolo per ogni singolo thread rispetto ad un programma che non usi i thread. Allo stesso modo, le persone che si avvicinano allo sviluppo di un [[kernel]] sono invitate a non usare algoritmi ricorsivi e [[buffer]] molto grandi nello stack<ref name="apple1">{{cite web
Gli ''stack overflow'' sono aggravati da qualsiasi cosa riduca la dimensione effettiva dello ''stack'' di un programma.
 
Gli stack overflow sono aggravati da qualsiasi cosa riduca la dimensione effettiva dello stack di un programma. Ad esempio un programma che viene eseguito come ''[[thread]]'' singolo potrebbe funzionare correttamente, ma se lo stesso programma viene eseguito con thread multipli si verifica un ''crash'' del programma. Ciò avviene perché molti programmi che usano i thread hanno a disposizione uno stack più piccolo per ogni singolo thread rispetto ad un programma che non usi i thread. Allo stesso modo, le persone che si avvicinano allo sviluppo di un [[kernel]] sono invitate a non usare algoritmi ricorsivi e [[buffer]] molto grandi nello stack<ref name="apple1">{{cite web
 
Allo stesso modo, le persone che si avvicinano allo [[sviluppo (informatica)| sviluppo]] di un [[kernel]] sono invitate a non usare [[algoritmo ricorsivo|algoritmi ricorsivi]] e [[buffer]] molto grandi nello stack<ref name="apple1">{{cite web
| publisher= [[Apple Inc]].
| title = Kernel Programming Guide: Performance and Stability Tips