Newsgroup: it.comp.lang.c++
Titolo: Allocazione memoria con le classi

Salve a tutti,
programmo in C++, dopo parecchi anni di inattivita(prima mi divertivo
con C) e sto imparando ad usare le classi (la OOP mi è nota per Java).
Il mio problema riguarda l'allocazione della memoria: ho un programma
in cui dichiaro diverse classi (in distinti file header) e
nell'esecuzione il file di paging di window supera i 2 GB e blocca
(giustamente per una volta) l'esecuzione del programma dicendomi che
il sistema ha esaurito la memoria (o qualcosa del genere.
Per essere piu preciso non faccio alcun utilizzo di new o delete e i
miei costruttori sono vuoti (non fanno nulla) perche gli attributi
delle classi li setto con opportuni metodi
(setProperty(ProperyName,PropertyValue)) da me scritti come pubblici
per ciascuna classe. Le istanze delle classi le dichiaro semplicemente
coe segue:
NomeClasse istanza_di_classe;
e infatti tutte le proprieta  e i metodi funzionano (il programma
funziona correttamente) ma la memoria si esaurisce (faccio un bel po
di conti ;o) )
Quello che non mi spiego è come mai il compilatore non da alcun errore
se la classe deve essere istanziata per forza con new? E come fa il
programma a funzionare se le istanze di classe non esistono? (desumo
per questo che la dichiarazione di oggetto implicitamente lo istanzi)
E se la dichiarazione di una istanza di una classe è sufficiente per
allocare memoria e chiamare il suo costruttore, perche la memoria
necessaria a tale oggetto aumenta ogni volta che chiamo alcuni suoi
metodi o mdifico il valore di alcune proprieta?
Mi aiutate, please? Sono disperato...ci ho perso la testa ancora
un'altra notte!!!
Spero di essere stato chiaro.
Vi prego è URGENTE!!!
Thanks,Diego

 Spero di essere stato chiaro.
insomma...
-- 
si prepara direttamente nel bicchiere basso detto "tumbler basso". Tre o 
quattro cubetti di ghiaccio, aggiungere il gin, il martini rosso, il 
bitter campari e mescolare. Guarnire con una fetta d'arancia.

 Spero di essere stato chiaro.
Anche io.
Ma più chiaro ancora sarebbe un bel libro sul C++ (suggerisco lo
Stroustrup, nel tuo caso)
ciaociao!
-- 
Gerolamo

 ciaociao!
Non ho il tempo....
Ho ripreso a programmare a basso livello solo per la tesi che è di
tipo sperimentale e presto speriamo avro finito!!!!
GRAZIE ANCORA

 insomma...
spero vada meglio!!! ;o)

 insomma...
spero vada meglio!!! ;o)

 E poi dicono di non prendersela con zio Bill!!!
lavoro con linux e linux si comporta più o meno uguale, mi sembra.


 dinamica con new), ma il file di paging del SO rimane enorme.
Non si tratta di un problema del linguaggio C++, ma del compilatore o 
del sistema operativo. Quando il codice applicativo disalloca la 
memoria, il supporto run-time puo' a sua volta rilasciare tale memoria 
al sistema operativo o mantenerla per successive allocazioni.
Per esempio, il compilatore Microsoft Visual C++ libera tutta la memoria 
quando si distrugge l'oggetto "istanzaClasse", mentre il compilatore GCC 
per Windows non la libera, ma la riutilizza per le due iterazioni 
successive.
Analogamente, quando un'applicazione rilascia della memoria al sistema 
operativo, questo puo' ridurre il file di paging, oppure mantenerlo 
grande per successive allocazioni.
-- 
     Carlo Milanesi
 
http://digilander.libero.it/carlmila

 Le collezioni <deque> e <vector> usano memoria.
Intendevo:
Le collezioni <deque> e <vector> usano meno memoria.
