Originariamente inviato da colde
Ma se io dovessi usare la forma:

codice:
Result := @ResponseBox[1];
oppure
Result := PChar(ResponseBox);
Non sono obbligato a gestire la deallocazione perchè ci pensa già delphi, in fin dei conti non alloco manualmente memoria ma lascio il compito a delphi. E' corretto quello che dico?
Sì, è corretto, ma il valore attribuito a Result è inutile se deve essere restituito, in quanto fa riferimento ad un'area di memoria che Delphi dealloca automaticamente non appena la stringa, che è la risorsa gestita in automatico, non viene più utilizzata.

In sostanza, restituisci il puntatore ad un'area di memoria che è allocata per una variabile di tipo string e che viene distrutta quando la variabile string stessa non viene più utilizzata; ti rimane quindi in mano un puntatore ad un'area di memoria che non è più disponibile in un determinato lasso di tempo.

E' proprio per questo motivo che occorre restituire il puntatore ad un buffer allocato "a mano" in cui, all'occorrenza, si copiano i caratteri di una stringa: essendo gestito autonomamente, Delphi non interviene in alcun modo sulla memoria in quanto è stata richiesta (e va deallocata) dallo sviluppatore. E' chiaro che lo sviluppatore deve poi farlo.