Oppure

Loading
25/08/09 16:22
scamiolo
Salve di nuovo
apro questo secondo topic perchè avrei un altro quesito da porvi. Devo creare una struttura con all'interno una variabile array tridimensionale molto grande. Quando lancio il programma questo si chiude inaspettatamente, e facendo il debug mi dice che la heap va in overflow. Se la stessa variabile la dichiaro a livello globale all'inizio del file tutto fila. Ora mi viene da pensare che il compilatore cerchi di allocare le variabili delle strutture nella memoria heap e quelle globali nella stack che è più grande e quindi non mi va in overflow. Adesso la mia domanda è: E' possibile dire al compilatore di allocare l'array voluminoso dichiarato all'interno della struttura nella memoria stack anzichè in quella heap
grazie mille per il vostro aiuto!
aaa
25/08/09 21:20
Matthew
Allora innanzi tutto le variabili statiche e globali non risiedono nello stack. Esse risiedono nel segmento dati se sono inizializzate, in caso contrario nel segmanto bss. Nello stack risiedono le variabili di funzione.
Dovrai pertanto allocare all'array tutta la memoria di cui a bisogno, attraverso le funzioni di allocazione dinamica della memoria. La memoria che gli allocherai apparterrà al segmento heap.
aaa
25/08/09 21:39
scamiolo
Grazie per la risposta.
Ho ancora un dubbio. Se l'array che devo creare ha una dimensione maggiore di quella disponibile della heap? Devo fare un int array[1000][300][300].
Avevo letto da qualche parte che la heap è la zona di memoria piccola ma di pronto utilizzo
grazie
aaa
25/08/09 21:58
Matthew
Si ovviamente non puoi avere tutta la memoria che vuoi... Ma non riesco a immaginarmi a cosa possa servirti un array così grande... Immagino che quando si lavora con tali moli di dati sia necessario salvare su file...
aaa