À retenir
- C'est une erreur de gestion de la mémoire qui fait planter le logiciel.
- La cause la plus fréquente est une fonction qui boucle sur elle-même à l'infini.
- C'est une faille de sécurité potentielle si le programme n'est pas bien protégé.
Le dépassement de pile se produit lorsqu'un programme informatique tente d'utiliser plus d'espace que prévu dans une zone de mémoire temporaire appelée la « pile ». On peut comparer cela à un placard dont les étagères sont pleines : si vous essayez d'y forcer un objet supplémentaire, tout s'écroule et le programme s'arrête brutalement pour éviter d'endommager le reste du système.
Étymologie
Il s'agit de la traduction française du terme anglais stack overflow. En informatique, une « pile » (stack) est une structure de données organisée de façon verticale (le dernier élément ajouté est le premier à être retiré). Le « dépassement » évoque le franchissement de la limite de capacité de ce réservoir de mémoire.
Exemples d'usage
- Une fonction de calcul qui s'appelle elle-même sans fin (récursion infinie), remplissant la mémoire à chaque nouvel appel.
- La déclaration d'une variable locale géante, comme une liste de 10 millions de noms, à l'intérieur d'une fonction alors que l'espace réservé est bien plus petit.
Cas d'usage
Ce phénomène survient principalement dans le développement logiciel (C, C++, Java, Python) lors d'erreurs de logique. C'est aussi un concept clé en cybersécurité, car certains pirates exploitent ces débordements pour injecter et exécuter du code malveillant sur un ordinateur.
Bonnes pratiques
Pour éviter ce bug, il est crucial de toujours prévoir une condition de sortie dans les fonctions récursives. Il est également recommandé de ne pas stocker de gros volumes de données dans des variables locales, mais de privilégier l'allocation dynamique (le « tas » ou heap).
Synonymes
Antonymes
Conseil
Si vous rencontrez cette erreur, utilisez un outil de débogage pour examiner la « trace d'appel » (stack trace). Elle vous montrera la suite de fonctions qui se sont empilées de manière excessive, vous permettant de trouver la boucle infinie.
Questions fréquentes
Quelle est la différence avec un dépassement de tampon ?
Le dépassement de pile est un type spécifique de dépassement de tampon qui cible précisément la zone de mémoire 'pile'.
Est-ce que cela peut endommager mon matériel ?
Non, c'est un problème purement logiciel. Votre ordinateur ne risque rien physiquement, le programme va simplement se fermer avec un message d'erreur.