Jak mogę zwrócić PChar z funkcji DLL do aplikacji VB6 bez ryzyka awarii lub wycieków pamięci?

Muszę utworzyć bibliotekę DLL, która jest używana przez aplikację VB6. Ta biblioteka DLL musi udostępniać kilka funkcji, niektóre z nich muszą zwracać ciągi znaków.

To jest deklaracja VB6:

Declare Function MyProc Lib "mylib.dll" (ByVal Param As String) As String

I to jest skrót implementacji Delphimylib.dll:

function MyProc(AParam: PChar): PChar; stdcall;
var
  ReturnValue: string;
begin
  ReturnValue := GetReturnValue(AParam);
  Result := ???;
end;

Co muszę tu wrócić? Kto zwolni pamięć powracającego ciągu PChar?

EDYTOWAĆ: Pytam o Delphi 2005 (PChar = PAnsiChar)

questionAnswers(7)

yourAnswerToTheQuestion