| Casa | Hardware | Redes | Programación | software | Criticar | Sistemas |   
Programación  
  • C /C + + Programming

  • Lenguajes De Programación

  • Delphi Programación

  • Programación Java

  • JavaScript Programación

  • Programación PHP /MySQL

  • Perl Programming

  • Python Programming

  • Rubí Programación

  • Visual Basics Programación
  •  
    Conocimientos Informáticos >> Programación >> Lenguajes De Programación >> Content
    ¿Qué es el desbordamiento de pila en la Línea 42
    ¿Un desbordamiento de pila se produce cuando la pila, una estructura de datos fundamental que se encuentra en cada programa en ejecución, supera sus límites de memoria. Esta condición tiene varias causas , todos los síntomas de errores de programación. Si se produce un error en un programa comercial o de código abierto , en contacto con el soporte técnico . Si el problema se produce mientras se prueba su propio código, aquí están algunos de los problemas más comunes que pueden haber ocurrido en la línea 42 . Fondo Fotos

    La pila de llamadas , la causa más común de desbordamientos de pila , contiene una lista de las direcciones de retorno de cada función o método de llamada. Cuando comience el programa , la pila de llamadas está vacía , entonces cuando la primera función se llama , la dirección de la línea inmediatamente después de la llamada a la función se empuja en la pila. Cuando la función termina , la dirección de retorno consigue apareció de la pila y la ejecución continúa en esta dirección . La pila se expande y se contrae en función del número de llamadas a funciones anidadas.
    Recursividad

    recursividad se produce cuando una función se llama a sí mismo. Considere el siguiente código:

    countNodes función ( nodo) Para cada childNode en nodenodeCount + = 1countNodes ( childNode ) SiguienteFin función

    Utilizando algún tipo de estructura de árbol como un documento XML, el código cuenta el número de nodos del árbol se encuentran bajo un nodo dado . Cada nodo hijo se contaba , entonces se pasa a la misma función para contar sus propios nodos secundarios. Esto continúa hasta que el niño no tiene hijos

    Supongamos que el nodo con tipo programador en lugar del nodo hijo de la siguiente manera : .

    CountNodes función ( nodo) Para cada childNode en nodenodeCount + = 1countNodes (nodo) SiguienteFin función

    En este caso , la función se llame a sí misma indefinidamente y se produce un desbordamiento de pila .
    Hidden recursividad

    En la mayoría de los casos, los desarrolladores no están escribiendo intencionalmente código recursivo , pero recursividad se pueden presentar en formas más sutiles . Considere las siguientes tres funciones :

    Función loadAccount () LoadMainAccount () loadTransactions () End función

    Función loadMainAccount () loadAssociatedAccounts () función
    función

    final loadAssociatedAccounts () loadAccount ( ) fin de la función

    En este caso , la recursión se produce indirectamente cuando una función llama a otra función que llama inadvertidamente la primera función . El resultado puede tardar un poco más , pero el resultado es un desbordamiento de pila .
    Grandes Parámetros

    Además de la función de seguimiento de puntos de devolución de llamada , la pila puede contener otros datos . La mayoría de lenguajes usan la pila para mantener los parámetros de función y estos son por lo general sólo abordan los punteros de las ubicaciones de los parámetros. Algunos idiomas empujan parámetros por valor en la pila , lo que puede tener mucho más espacio . El tamaño de pila predeterminado para la mayoría de los lenguajes van desde 512K a 1MB , por lo que grandes parámetros pasados ​​por valor pueden ocasionalmente causar un desbordamiento de pila . Si hay una necesidad de pasar grandes parámetros por valor , consulte el manual de referencia del lenguaje para determinar la forma de aumentar la pila.
    Variables de instancia

    variables de instancia son las incluidas dentro de la función . Por ejemplo :

    muestra la función ( ) N = getCounter () Retorno n * 12end función

    La variable n es una variable de instancia , ya que sólo existe mientras que la muestra función ejecuta . En muchos idiomas , n es empujado en la pila , y luego se desprendió cuando la función termina . Esto funciona bien para las variables simples, como enteros y caracteres , pero puede llenar la pila cuando se utilizan grandes conjuntos . Cuando esto se convierte en un problema, considere el uso de una función de las estructuras de datos como cadenas o listas. Estas estructuras suelen asignar memoria en el montón , un área de memoria separada , mucho más grande.

    Previous :

    next :
      Artículos relacionados
    ·Gratis Capacitación en Programación 
    ·Cómo poner un signo de exclamación en TWiki 
    ·¿Cuánto tiempo lleva iPhone Desarrollo App 
    ·Cómo combinar DNN y XMod Buscar 
    ·Definición de polimorfismo en Computadoras 
    ·Cómo utilizar la función de recursividad Fibonacci 
    ·Puede COBOL mostrar un valor Hex 
    ·Cómo ejecutar código fuente 
    ·UML Limitaciones 
    ·Cómo programar un PLC Allen Bradley 
      Artículos destacados
    ·Cómo cambiar el cursor sobre Rollover Rollover 
    ·Cómo hacer un evento de clic del ratón mediante Visua…
    ·Cómo reemplazar en mayúsculas con minúsculas en PHP 
    ·Cómo crear un cuadro de lista en Visual Basic 
    ·Cómo buscar el número de apariciones de cada caracter…
    ·Cómo agregar elementos de matriz en VBS 
    ·¿Qué son las afirmaciones en Java 
    ·ADT Tipos Abstractos de Datos 
    ·Cómo llamar a procedimientos almacenados SQL en Visual…
    ·Cómo pasar una cadena a abrir un ifstream 
    Copyright © Conocimientos Informáticos http://ordenador.wingwit.com