PDA

View Full Version : [c] Dubbio dimensione memoria albero


ohi
22-01-2011, 19:00
Ciao ho il seguente dubbio, io ho una struttura che occupa 30 byte (controllata con sizeof), creo un albero ma quando giunge in prossimità dei 5000 nodi mi segnala un problema di Stack overflow. La cosa mi sembrapiuttosto strana

30x5000=150000 byte ho più di 2GB di RAM?

GameKeeper
22-01-2011, 22:40
Uno stack overflow non è un problema di memoria, lo stack contiene gli indirizzi di memoria programmi a cui tornare dopo l'uscita da un sottoprogramma, quindi probabilmente hai effettuato troppe chiamate a sottoprogrammi e lo stack è andato appunto in overflow.
Dico questo da programmatore di microprocessori ma credo che sia la stessa cosa anche nei pc

ohi
23-01-2011, 10:19
quindi probabilmente hai effettuato troppe chiamate a sottoprogrammi e lo stack è andato appunto in overflow.

Grazie mille, quale soluzione posso adottare per questo inconveniente?

clockover
23-01-2011, 10:23
In che occasione ti da l'overflow? Inserimento.. ricerca.. rimozione?

ohi
23-01-2011, 11:13
Inserimento dati nell'albero, tramite ricorsione.

clockover
23-01-2011, 11:20
Non so se il tuo è un albero binario, un BST, o un albero generico, ma di solito un inserimento iterativo è molto più efficiente! E poi sicuramente lo stack di memoria ringrazia

ohi
23-01-2011, 11:30
E' un albero binario quindi senza ricursione

clockover
23-01-2011, 11:34
Inserimento dati nell'albero, tramite ricorsione.

E' un albero binario quindi senza ricursione

non ho capito :confused:

ohi
23-01-2011, 11:54
non ho capito
Scusa colpa mia, intendevo io ho il problema di stack overflow in fase di inserimento dati tramite ricorsione, provo a implementare tramite procedimento iterattivo, sperando di aggirare il problema.

ohi
23-01-2011, 14:21
Mi è venuto un dubbio, se un array definito esternamente rientra all'nterno di una funzione ricorsiva, questa non viene ogni volta indirizzata ma rimane sempre alloccata in un'unico indirizzo di memoria pre alloccata?

Cioè le variabili esterne non influenzano l'allocazione di memoria, ma solo le variabili definite interne alla funzione ricorsiva?