PDA

Visualizza la versione completa : [c++ stl] stl , memoria occupata


giuseppe500
07-07-2011, 05:19
ciao.
Ho creato un importatore in c++ da sketchup per opengl.
Utilizzo per immagazzinare i dati dei vector stl std::vector e sui dati effettuo pochissime operazioni , se non nessuna.
Il problema è che per modelli medio piccoli funziona correttamente, mentre per modelli molto,molto grandi va in crash.
Ho osservato l'occupazione di memoria dopo aver lanciato l'eseguibile compilato in release (con il gestione attività/prestazioni di win vista)e tende a crescere normalmente per modelli semplici , mentre per i modelli molto grandi cresce fino a 3gb(compilo a 32 bit) poi va in crash.

E possibile risolvere qualcosa utilizzando invece dell' stl dei container piu' leggeri(tipo linked list?)?
prima di farlo lo provo a chiedere.
o qualche altra tecnica?
perchè ho letto che i container stl sono avari di risorse , è vero?
ci sono delle statistiche da qualche parte?

grazie

MItaly
07-07-2011, 22:49
Non puoi occupare meno spazio che in un vector, dato che esso semplicemente usa internamente un array stile C per gli elementi, un puntatore a tale array e due size_t per memorizzare capacity e size. Tutti gli altri container occupano più spazio.
Se sai in anticipo di quanti oggetti si parla puoi preallocare il vettore esattamente alla dimensione giusta (in modo che nel riallocare automaticamente non allochi più spazio del necessario), ma dubito che servirà a qualcosa; l'unica credo sia diminuire le dimensioni dei tuoi oggetti.

Loading