2010-10-11 7 views
-1

Possible en double:
What is a stack overflow error?Que sont les erreurs stackoverflow et bufferoverflow?

Eh bien, je l'ai entendu son erreur la plus commune que l'on éprouve lors de l'écriture d'un programme ... Je suis très nouveau à la programmation, à seulement 2 ans codage et je n'ai jamais rencontré cette erreur! Donc, au risque de paraître très stupide, je voudrais demander ... Qu'est-ce que stackoverflow et qu'est ce que bufferoverflow?

Est-ce que stackoverflow est lié au bufferoverflow?

Un lien wiki ne m'aidera littéralement pas car je l'ai traversé et je ne l'ai pas compris. Donc, si vous pouviez le berner ... Comment le diriez-vous?

+2

Il pose également des questions sur les dépassements de tampon. – Oded

+4

Note: cela n'appartient pas * sur * meta car il s'agit de "stack overflow" l'erreur d'exécution, pas "Stack Overflow" l'application web. – ChrisF

+2

Certainement pas un doublon exact! Editer la question .. Veuillez voter pour rouvrir! – traumatized

Répondre

6

La plupart des systèmes d'exploitation contiennent des informations de programme dans des structures de données appelées une pile et un tas. Un StackOverflow se produit lorsque l'on a ajouté plus d'informations à la pile que ce qui est autorisé à tenir (plusieurs fois cela peut arriver avec une fonction récursive sans clause de terminaison). Un tampon est un ensemble d'emplacements de mémoire (normalement contigus) utilisés pour stocker des données temporaires. Un débordement de tampon se produit lorsque vous essayez d'écrire dans la mémoire au-delà de la fin de la mémoire tampon. Cela a des implications de sécurité, car parfois la mémoire au-delà du tampon n'est pas protégée et le code inséré après il peut être exécuté.

2

Un StackOverflow est ce qui se passe lorsque vous manquez d'espace de pile pour vous programme à exécuter dans.

je suis arrivé l'autre jour avec un code d'événement mal écrit, où un événement déclencherait un autre événement provoquant l'original événement, et ainsi de suite, jusqu'à ce que la pile déborde avec les appels de méthode.

Un dépassement de tampon ou un dépassement de tampon est ce qui se produit lorsque vous essayez d'écrire des données après la fin d'un tableau. Par exemple

char* s = "hello"; 
s[7] = 'g'; 

On ne sait pas ce que l'écriture 'g' à l'emplacement 7 dans la chaîne va faire. Cette technique peut être utilisée par des programmeurs infâmes pour exécuter du code arbitraire sur un système.