linux user group brescia

immagine del castello

Archivio della mailing list

Cattiva free() e OpenOffice

Gabriele Villi gvilli a iol.it
Ven 1 Ago 2003 08:11:54 UTC
Alle 15:36, giovedì 31 luglio 2003, Vernia Damiano ha scritto:
> 	Ciao, due quesiti assolutamente diversi uno dall'altro:
> 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

Prima di indagare sull'improbabile, io cercherei di escludere le cause piu' 
ragionevoli del problema; in altre parole, accertati di liberare _tutti_ i 
blocchi che allochi: passa ai raggi X il tuo programma, magari con l'ausilio 
di un qualche tool di profiling. Se non trovi niente di meglio puoi sempre 
fare roba tipo

#define malloc my_malloc

in un include incluso da tutti i moduli del tuo prg. Poi costruisci la 
funzione

void *my_malloc(size_t s) {
#undef malloc
     x= malloc(s)
    /* log dell'allocazione di X: puntatore, dimensione, timestamp, ecc. */
}

idem per la free, la calloc, la realloc, eccetera, poi ricompili il tutto e 
fai girare il tuo prg e ti diverti ad analizzare i log.

non prendere per oro colato il codice che ho scritto, saranno 3 anni che non 
scrivo una riga di C.... :( 

Ah, prova anche a vedere se tra le mille e mille opzioni del compilatore c'e' 
n'e' una relativa al profiling... io non ricordo ma....

> 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

a me risulta che l'allocatore adotti un algoritmo che cerca di evitare la 
frammentazione... faccio fatica a pensare ad un modo per trasformare in una 
specie di "colabrodo" lo heap... 
Se non ricordo male, quando fai la free di un blocco, il sistema "fonde" il 
blocco libero con gli eventuali blocchi liberi contigui.

> deallocare sempre e solo blocchi delle medesime dimensioni possa
> migliorare questo aspetto?
non vedo perche'. Ma c'e' da dire che sono fortemente miope :)

> 2. Il discorso si e' interrotto quasi subito, ma siccome sono riuscito a
> convincere mio padre a passare da Office a OpenOffice mi interesserebbe
> sapere qualche opinione in piu' sul pacchetto. Lui lo userebbe con

Lo uso da tempo su una macchina win 2k. Qualche instabilita' e problemi di 
compatibilita' con office. Se vuoi, magari continuiamo il discorso in 
privato, per non "inquinare" il lug.

ciao
gv




Maggiori informazioni sulla lista Lug