linux user group brescia

immagine del castello

Archivio della mailing list

Cattiva free() e OpenOffice

Giuseppe Corbelli cowo a lugbs.linux.it
Ven 1 Ago 2003 09:37:00 UTC
On Thu, Jul 31, 2003 at 11:23:14PM +0200, Nicola Gatta wrote:
> > 1. Sapete nulla circa inefficienze della funzione free()? Il mio programma 
> > continua ad aumentare di dimensioni in memoria, nonostante io deallochi 
> > sempre e per benino la memoria che uso. Non sara' che malloc() (e 
> > calloc()) allocano comunque nuova memoria anche se dei blocchi precedenti 
> > sono stati liberati? L'unica spiegazione che ho trovato finora e' che i 
> > blocchi che alloco (di dimensioni diverse) "interferiscono" tra loro e 
> > lasciano molti buchi inutilizzati. Comunque anche cosi' riseco a stento a
> > giustificare la grande quantita' di RAM usata. Credete che allocare e 
> > deallocare sempre e solo blocchi delle medesime dimensioni possa 
> > migliorare questo aspetto?
> 
> Non penso, acnhe se non ho mai fatto esperimenti specifici.
> L'operazione di free e' piuttosto costosa in termini di risorse...
Non so se me lo sono sognato adesso o se l'ho letto da qualche parte. Puo'
darsi che tutte le free vengano rimandate sino a quando la memoria non e'
piena.

> (la questione del "riordino" dei chunk inutilizzati e' abbastanza complessa) 
> Opterei per una sorta di meccanismo di caching che evita di effettuare free
> finche' e' possibile.
> Anche a me e' successo: una volta ho allocato quasi un giga di ram 
> (e le free c'erano tutte...)
AFAIK si puo' usare la glib che ha appunto un meccanismo interno di caching
di malloc e free.
-- 
        Giuseppe "Cowo" Corbelli ~\/~ My software: http://cowo.yoda2000.net
-<! When I was young I used to pray for a bike. Then I realized that God 
	 doesn't work that way. So I stole a bike and prayed for forgiveness. !>-



Maggiori informazioni sulla lista Lug