Ciao Alka,
mi viene un dubbio atroce:
nella DLL elaboro dei dati e li inserisco una variabile di tipo string, dopodichè alloco memoria nel buffer e copio il contenuto della stringa in una variabile PChar che viene restituita dalla DLL e letta dal software esterno, in questo modo:
codice:
//Alloco memoria per contenere il valore di ritorno della funzione da passare al software
GetMem(Result,Length(ResponseBox));
//Copio il valore di ritorno nella variabile che la funzione ritorna
Result := StrPCopy(Result, ResponseBox);
ResponseBox è la varibile di tipo string mentre result è naturalmente la variabile usata come ritorno della funzione dalla DLL all'applicazione esterna.
Sia nella DLL che nell'applicazione esterna non ho inserito alcun deallocamento di memoria ma dai test che ho fatto non ricevo mai alcun errore anche se richiamo la funzione N volte.
Con questo sistema sono obbligato a deallocare la memoria manualmente oppure lo fa già delphi in modo automatico? Se dovessi obbligatoriamente deallocare la memoria manualmente, come potrei fare? Nella variabile di ritorno alla funzione non assegno un indirizzo di memoria ma il contenuto della variabile ResponseBox e in caso fossi obbligato a deallocare memoria lo vorrei fare da DLL e non da software esterni, il problema è che non saprei come gestirlo. Mi sai dare qualche delucidazione?
Come potrei verificare se la DLL mi ciuccia memoria all'infinito? In altre parole,come posso verificare quanta memoria viene allocata dalla DLL?
Grazie mille