Connaissances Informatiques >> programmation >> Computer Programming Languages >> Content
  Derniers articles
  • Comment mettre à l'épreuve AJAX 
  • Quels sont les avantages d' une inst…
  • Comment faire pour supprimer tous le…
  • Histoire de Matlab 
  • Comment utiliser des variables SQL d…
  • Comment appliquer une texture sur te…
  • Comment apprendre Python gratuitemen…
  • Comment faire un fond de remplissage…
  • Comment écrire un programme graphiq…
  • Qu'est-ce qu'une erreur de syntaxe d…
  •   Computer Programming Languages
  • C /C + + Programming

  • Computer Programming Languages

  • Delphi Programming

  • Programmation Java

  • Programmation JavaScript

  • PHP /MySQL Programmation

  • programmation Perl

  • Programmation Python

  • Ruby Programming

  • Visual Basics programmation
  •  
    Computer Programming Languages

    Qu'est-ce débordement de la pile à la ligne 42

    ? Un débordement de pile se produit lorsque la pile, une structure de données critique trouvée dans chaque programme en cours, a dépassé ses limites de mémoire. Cette condition a plusieurs causes , les symptômes d' erreurs de programmation. Si l'erreur apparaît dans un programme de source commerciale ou ouvert , contactez d'assistance technique. Si le problème se produit , tout en testant votre propre code, voici quelques-unes des questions les plus courantes qui peuvent avoir eu lieu à la ligne 42 . Contexte

    La pile d'appel , la cause la plus fréquente des débordements de pile , tient une liste des adresses de retour de chaque appel d'une fonction ou d'une méthode . Lorsque le programme commence , la pile d'appels est vide, puis lorsque la première fonction est appelée , l'adresse de la ligne immédiatement après l'appel de fonction est poussé sur la pile. Lorsque la fonction est terminée, l'adresse de retour se extraites de la pile et l'exécution se poursuit à cette adresse. La pile se dilate et se rétracte en fonction du nombre d'appels de fonction imbriqués.
    Récursivité

    récursivité se produit lorsqu'une fonction s'appelle elle-même . Considérons le code suivant :

    countNodes de fonction ( node) Pour chaque childNode dans nodenodeCount + = 1countNodes ( childNode ) nextEnd fonction

    utilisant une sorte de structure arborescente comme un document XML , ce code compte le nombre de nœuds de l'arbre se trouvant sous un noeud donné . Chaque nœud enfant est compté, alors il est transmis dans la même fonction à compter ses propres nœuds enfants. Cela continue jusqu'à ce que l'enfant n'a pas d'enfants

    Supposons que le nœud typé programmeur au lieu de nœud enfant comme suit : .

    CountNodes de fonction ( node) Pour chaque childNode dans nodenodeCount + = 1countNodes (Node ) nextEnd fonction:

    Dans ce cas , la fonction s'appellerait indéfiniment et un débordement de pile se produit.
    Invisible récursivité

    Dans la plupart des cas, Les développeurs ne sont pas intentionnellement l'écriture de code récursif , mais récursion peuvent se produire de façon plus subtile . Tenez compte de ces trois fonctions:

    loadAccount de fonction ( ) de LoadMainAccount () loadTransactions () End Function

    loadMainAccount de fonction ( ) loadAssociatedAccounts () function function

    d'iPhone de fin loadAssociatedAccounts () de loadAccount ( ) End Function

    Dans ce cas , la récursivité est indirecte lorsqu'une fonction appelle une autre fonction qui appelle par inadvertance la première fonction. Le résultat peut prendre un peu plus longtemps, mais le résultat est un débordement de pile .
    Grands paramètres

    Outre la fonction de suivi des points de retour d'appel, la pile peut également contenir d'autres données . La plupart des langues utilisent la pile pour maintenir les paramètres de fonction et ceux-ci sont habituellement juste pointeurs d'adresses des emplacements de paramètres. Certaines langues poussent paramètres par valeur sur la pile , ce qui peut prendre beaucoup plus d'espace . La taille de pile par défaut pour la plupart des langues gamme de 512K à 1 Mo, si grands paramètres passés par valeur peuvent parfois causer un débordement de pile . Si il est nécessaire de passer de grands paramètres par valeur , consultez le manuel de référence du langage afin de déterminer comment augmenter la pile.
    Variables d'instance
    variables d'instance de

    sont ceux intégrés à l'intérieur de la fonction. Par exemple:

    échantillon de fonction ( ) N = getCounter () Return n * 12end fonction

    La variable n est une variable d'instance , car il n'existe que pendant que l'échantillon de la fonction s'exécute. Dans de nombreuses langues , n est poussé sur la pile , puis s'est détaché lorsque la fonction se termine. Cela fonctionne bien pour les variables simples comme les entiers et les personnages , mais peut remplir la pile lors de grands tableaux sont utilisés. Quand cela devient un problème , pensez à utiliser intégré dans les structures de données comme les chaînes ou les listes . Ces structures allouent généralement mémoire sur le tas , une , beaucoup plus grande zone de mémoire séparée .

     
    Article précédent:
    Article suivant:
    Articles recommandés
  • Comment faire pour supprimer du texte dans un encadré dans NET 
  • Comment faire une chaîne de caractères minuscules 
  • Comment faire pour mettre un retard dans le Shell Script 
  • L'importance des zones tampons 
  • Entity Framework vs NHibernate 
  • Quels sont les avantages d' une instruction conditionnelle 
  • La définition d'une erreur d'exécution UNTRAPPED 
  • Types d' erreurs de syntaxe 
  • Comment créer une boîte de mot de passe avec la programmation HTML Simple 
  • Comment ajouter des barres de ligne sur un site Internet 
  • Connaissances Informatiques © http://www.ordinateur.cc