La memoria allocata per le stringhe viene gestita dinamicamente da Delphi, al contrario la memoria recuperata con GetMem è un buffer totalmente gestito dallo sviluppatore (e va quindi deallocato, a piacere, quando non serve più, con FreeMem).
Se copi una stringa String in un buffer, quando questa viene deallocata il buffer contenente la copia sopravvive, ovviamente, perché la sua gestione è affidata allo sviluppatore.
Se non recuperi la memoria allocata con GetMem, è chiaro che si tratta di un "memory leak" e il tuo programma, ad ogni chiamata, allocherà una quantità sempre maggiore di memoria.
Per informazioni ed esempi sulla GetMem, leggi qui (ci sono informazioni anche per le funzioni correlate).
Ciao!![]()