| Home  | Casa  | Hardware  | Networking  | Programmazione  | Software  | Domanda  | Sistemi  |   
Programmazione  
  • C /C + + Programming

  • Computer Programming Languages

  • Delphi Programming

  • Java Programming

  • Programmazione Javascript

  • PHP /MySQL Programmazione

  • Perl Programming

  • Python Programming

  • rubino Programmazione

  • Nozioni di base di Visual Programming
  •  
    Conoscenza Informatica >> Programmazione >> Computer Programming Languages >> Content
    Che cosa è Stack Overflow at Linea 42
    ? Un overflow dello stack si verifica quando la pila , una struttura dati critici presenti in ogni programma in esecuzione , ha superato i suoi limiti di memoria . Questa condizione ha diverse cause , tutti i sintomi di errori di programmazione . Se l'errore si verifica in un programma di origine commerciale o aperti , contattare l'assistenza tecnica . Se il problema si verifica durante la prova il proprio codice , qui sono alcuni dei problemi più comuni che si sono verificati in linea 42 . Sfondo Foto

    Lo stack di chiamate , la causa più comune di overflow dello stack , contiene un elenco di indirizzi di ritorno di ogni funzione o di un metodo di chiamata. Quando inizia il programma , lo stack di chiamate è vuota , allora quando la prima funzione viene chiamato, l' indirizzo della riga immediatamente dopo la chiamata di funzione viene spinto in pila. Quando la funzione completa , l'indirizzo di ritorno viene estratto dallo stack e l'esecuzione continua a questo indirizzo . Lo stack si espande e si comprime a seconda del numero di chiamate di funzioni nidificate .
    Ricorsione

    ricorsione si verifica quando una funzione richiama se stessa . Si consideri il seguente codice :

    countNodes funzione ( nodo ) Per ogni childNode in nodenodeCount + = 1countNodes ( childNode ) Succ.Fine funzione

    utilizzando una sorta di struttura ad albero come un documento XML , il codice conta il numero di nodi dell'albero trovati sotto un dato nodo . Ogni nodo figlio viene contato , poi viene passato nella stessa funzione per contare i propri nodi figli . Questo continua fino a quando un bambino non ha figli

    Supponiamo che il programmatore nodo tipizzata invece di nodo figlio come segue : .

    CountNodes funzione ( nodo ) Per ogni childNode in nodenodeCount + = 1countNodes ( Node ) Succ.Fine funzione

    In questo caso, la funzione chiamerà se stesso a tempo indeterminato e un overflow dello stack si verifica .
    Nascosto ricorsione

    Nella maggior parte dei casi , Gli sviluppatori non stanno scrivendo intenzionalmente codice ricorsivo , ma ricorsione possono verificarsi in modi più sottili . Considerate queste tre funzioni:

    Funzione loadAccount ( ) LoadMainAccount ( ) loadTransactions ( ) End Function

    Funzione loadMainAccount ( ) loadAssociatedAccounts () la funzione
    funzione

    fine loadAssociatedAccounts ( ) loadAccount ( ) end Function

    In questo caso , la ricorsione indiretta si verifica quando una funzione chiama un'altra funzione che chiama inavvertitamente la prima funzione . Il risultato può prendere un po 'di più , ma il risultato è un overflow dello stack .
    Parametri Grandi

    Oltre tracciamento funzione punti di ritorno di chiamata , la pila può anche contenere altri dati . La maggior parte delle lingue usa lo stack per contenere i parametri di funzione e questi sono di solito solo affrontare puntatori delle posizioni dei parametri. Alcune lingue spingono parametri per valore nello stack e questo può richiedere molto più spazio . La dimensione dello stack di default per la maggior parte delle lingue variare da 512 K a 1 MB, così grandi parametri passati per valore potevano occasionalmente causare un overflow dello stack . Se vi è la necessità di passare grandi parametri per valore , consultare il manuale di riferimento di lingua per determinare come aumentare lo stack .
    Variabili di istanza
    variabili di istanza

    sono quelli incorporati all'interno della funzione . Per esempio :

    campione di funzione ( ) N = GetCounter ( ) Return n * 12End funzione

    La variabile n è una variabile di istanza , poiché esiste solo mentre il campione funzione esegue . In molte lingue , n viene inserito nello stack , poi spuntato fuori quando la funzione termina. Questo funziona bene per le variabili semplici come numeri interi e caratteri , ma può riempire lo stack quando si utilizzano matrici di grandi dimensioni . Quando questo diventa un problema , è possibile utilizzare built-in strutture di dati come stringhe o elenchi . Queste strutture solitamente allocano memoria nello heap , una , molto più grande area di memoria separata .

    Previous :

    next :
      Articoli Correlati
    ·Certificazione Microsoft C Sharp 
    ·Come trovare una griglia di riferimento OS 
    ·È ordinato Malware Script 
    ·Come trama con MATLAB 
    ·Come inserire CheckBoxList multipla in Asp.Net 
    ·Come compilare il TextPad 5 
    ·Tutorial per SQLAlchemy di Python 
    ·Requisiti di sistema per Visual Studio 2008 Express 
    ·DataColumn tipo 
    ·Come imparare ASP online 
      Articoli in evidenza
    ·Guida su come scrivere Pseudocodice 
    ·Come collegare Debugger in C # 
    ·Come collegare un database di Visual Basic 
    ·Come importare un file Python per lavorare in un GUI Py…
    ·Come faccio a stabilizzare il numero di cicli in Java ?…
    ·Come imparare Python Linguaggio informatico 
    ·Come aprire file doc in Vb.Net 
    ·Come ordinare un array 
    ·Come usare Ant in FlashBuilder 
    ·Come leggere file xls Vb 
    Copyright © Conoscenza Informatica http://it.wingwit.com