| maison  | Hardware  | réseaux  | programmation  | Logiciel  | Dépannage  | systèmes |  
programmation  
  • C /C + + Programming

  • Computer Programming Languages

  • Delphi Programming

  • Programmation Java

  • Programmation JavaScript

  • PHP /MySQL Programmation

  • programmation Perl

  • Programmation Python

  • Ruby Programming

  • Visual Basics programmation
  •  
    Connaissances Informatiques >> programmation >> Computer Programming Languages >> Content
    Qu'est-ce que Stack Overflow
    ? Un débordement de pile est un type d' erreur de programmation qui se produit lorsqu'un programme tente d'allouer plus de mémoire sur la pile d'appel que ce qui est disponible . Il s'agit d'une erreur potentiellement grave qui provoque le programme incriminé à l'accident et est habituellement le résultat d'une des deux erreurs de conception . La pile

    La pile se réfère à une partie de la mémoire qui est utilisé pour stocker des informations sur les fonctions d'un programme . Les tailles et les détails techniques de la pile sera varient selon le langage de programmation , un compilateur , système d'exploitation et le type de processeur, et ces détails sont généralement cachés au programmeur dans la plupart des langages de haut niveau.
    Exemple pile

    Prenons l'exemple suivant en pseudo-code :
    fonction

    un {1 . fonction b.2 appeler . appeler la fonction c . }

    fonction b { 1. fonction c.2 appeler . Coin impression . }
    Fonction

    c {1 . Tirage . }

    Comme chaque fonction peut appeler d'autres fonctions , la pile est là pour garder une trace de l'endroit où la fonction de parent pour continuer après un retour de la fonction de l'enfant. Cet exemple , s'il s'est arrêté à l'intérieur de la fonction c , peut avoir une pile qui ressemble à ceci :

    > A1 ---> B1 --------> C1
    < p > Depuis la première ligne de la fonction Une fonction appels B, et la première ligne de la fonction B appelle la fonction C. Lorsque la fonction C se terminera , le programme continuera de remonter la chaîne , la course B2 et enfin A2 .

    récursion infinie

    Un débordement de pile se produit lorsqu'un programme tente de stocker trop d'informations sur la pile. La cause la plus fréquente d'un débordement de pile est une erreur de conception appelé récursion infinie . Prenons l'exemple suivant en pseudo-code :
    fonction

    {1 . appeler la fonction A. }

    la pile résultante :

    -> A1 ---> A1 --------> A1 ------- ------- > A1 ( et ainsi de suite )

    Ceux qui sont familiers avec la programmation informatique reconnaîtront qu'il s'agit d' une variante de la boucle infinie , à l'exception , plutôt que de courir toujours, ce programme finira par consommer tout la mémoire sur la pile, résultant dans un accident et une erreur de débordement de pile.
    prévention

    pile erreurs de dépassement se produit généralement lorsque l'on tente de mettre en œuvre des algorithmes récursifs , et la clé d'éviter la plupart des erreurs est de s'assurer que ce qui suit est vrai de tous implémentation récursive : la fonction récursive doit contenir une condition de sortie qui ne crée pas une autre couche de la récursivité et la fonction récursive doit être conçu de telle sorte que chaque couche de la récursivité ajoutée doit apporter la fonction de plus près à la condition de sortie .
    grandes variables locales

    autre , cause beaucoup plus rare d'erreurs de dépassement de pile est la déclaration de grandes variables locales , généralement sous la forme des tableaux contenant des centaines de milliers , voire des millions , d'éléments . Le plus simple pour éviter les débordements de pile dans cette situation est d'utiliser des pointeurs et l'allocation dynamique de la mémoire pour éviter de déclarer les données sur la pile lorsque ces opérations gourmandes en mémoire sont nécessaires.

    Previous :

    next :
      articles connexes
    ·Comment faire pour arranger les lignes dans Netbeans 
    ·Types d'algorithmes de clustering 
    ·Comment afficher les noms d' objet dans MATLAB 
    ·Comment effacer texte en Python 
    ·Video Studio Tutorial 
    ·Comment faire Styles vBulletin 
    ·Certification d'architecte Mobile 
    ·Un tutoriel pour FPGA Altera 
    ·Comment faire pour convertir des nombres décimaux de f…
    ·Comment insérer CheckBoxList multiple dans Asp.Net 
      articles en vedette
    ·Comment faire exploser une chaîne en utilisant JavaScr…
    ·Comment réinstaller IE6 utilisant Regedit 
    ·Comment fusionner un fichier XML dans Crystal Reports 
    ·Comment ajouter des fichiers JAR à un projet Android 
    ·Comment créer un décodeur 
    ·Comment faire pour installer RubyGems 
    ·Java et l'API expliquer aux parents 
    ·Comment faire pour changer la casse de la phrase en PHP…
    ·Comment passer des paramètres à sous-programmes en Pe…
    ·Comment faire pour convertir DirectX stéréoscopique T…
    Copyright © Connaissances Informatiques http://fr.wingwit.com