Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Dichiarazione variabili in strutture
Forum - C/C++ - Dichiarazione variabili in strutture

Avatar
scamiolo (Normal User)
Newbie


Messaggi: 4
Iscritto: 25/08/2009

Segnala al moderatore
Postato alle 18:22
Martedì, 25/08/2009
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!

PM Quote
Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 23:20
Martedì, 25/08/2009
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.

PM Quote
Avatar
scamiolo (Normal User)
Newbie


Messaggi: 4
Iscritto: 25/08/2009

Segnala al moderatore
Postato alle 23:39
Martedì, 25/08/2009
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

PM Quote
Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 23:58
Martedì, 25/08/2009
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...

PM Quote