Newsgroup: it.comp.lang.delphi
Titolo: Memory leak e MemProof

Ciao a tutti,
in parecchi post relativi a problemi di memory leak ho visto che si
consiglia l'analisi dei processi utilizzando MemProof così l'ho
scaricato, purtroppo però non esiste una guida o un tutorial per
interpretare correttamente i risultati delle analisi. Qualcuno sa dirmi
dove trovare della documentazione? Ho cercato su google e sul sito di
MemProof ma non vi è l'ombra di uno straccio di documentazione nè
tutorial o informazioni sul suo utilizzo.
Grazie mille

 scaricato, purtroppo però non esiste una guida o un tutorial
ihmo, strumenti del genere sono lo "step 2"
Lo step 1 e' darsi delle regole forti e degli standard per evitare
l'introduzione nel codice di memory leak:
1) stabilire il ciclo di vita di una istanza, verificando se conviene
crearla in fase di startup o al 1' tentativo di utilizzo e distruggerla
in uscita, oppure se conviene crearla quando serve e distruggerla
subito dopo.
2) utilizzare blocchi try...finally al fine di garantire che cio che
viene allocato all'occorrenza sia correttamente liberato quando non
serve +, sia per quanto riguarda le istanze che per quanto riguarda la
memoria (getmem etc)
3) tenere bene a mente che a cio che eredita da tcomponent va applicata
la free/destroy qualora ne sia stata invocata la creazione utilizzando
nil come parametro owner
4) tenere bene a mente che le classi i cui costruttori non hanno
l'owner DEVONO essere liberate a mano
5) che non e' detto che tutti le classi che gestiscono delle collection
(tlist, tobjectlist,..) eseguono la free degli items che contengono
quando vengono distrutte
6) lo so, sfondo una porta aperta, ma meglio sottolineare che
delphi(win32) NON HA IL GARBAGE COLLECTOR, visto che non troppi  gg fa
qualcuno poneva questa issue.
A.

Mi stanno bene le regole da seguire che hai postato ma vorrei
controllare ed assicurarmi che tutto funzioni correttamente. Non è da
molto che uso delphi quindi non lo conosco ancora bene e vorrei evitare
errori inutili, tutto qui. Se poi si somma il fatto che il programma
che sto sviluppando è una DLL che deve seguire accorgimenti
particolari, capirai anche tu che ho la necessità di verificare il suo
funzionamento il più possibile anche perchè per me queste cose sono
tutti argomenti nuovi. Quindi, come posso capire se la mia DLL va in
memory leak o no? Con MemProof come posso verificarlo?
Grazie
Alberto Salvati ha scritto:


Dunque, visto che non avevo idea di come MemProof potesse segnalare
eventuali errori, sono partito dal presupposto che il mio programma ne
generasse. Ho provato a debuggare un po di programmi tra cui GVim (è
un editor di testo), NotePad, un programmino in delphi che ho scaricato
(converte una stringa in esadecimale), WinZip, WinRar, MediaPlayer e
InnoSetup. Ho notato che diversi programmi mi generano errori di vario
genere, di solito al kernel quindi andando per logica il mio programma
con DLL annessa non restituisce messaggi di errore. Non ne sono ancora
convinto al 100% ma è già un passo avanti.

Grazie mille
Ho usato memproof ed individuato un leak in un applicativo: non distruggevo 
una risorsa grafica quando era necessario ricrearla.
Ti consiglio, dopo aver lanciato il tuo exe dal memproof di tenere 
sott'occhio il max raggiunto dai vari item: se uno di questi cresce di 
continuo ad esempio eseguendo una certa operazione e' consigliabile rivedere 
il sorgente relativo. Per il resto ho solo delle istruzioni su come 
configurare Delphi per usare lo strumento, se ti mancano anche queste fai un 
fischio
Ciao Giorgio