No Delphi na minha DLL, tenho que alocar o pchar de retorno de uma função

Eu tenho uma DLL na qual tenho uma função que retorna um pchar. (para evitar ter que usar borlndmm) O que eu estava fazendo originalmente foi converter uma string como um pchar e retornar essa

Result := pChar(SomeFuncThatReturnsString)

Mas eu estava obtendo resultados esperados 90% das vezes e nas outras vezes não recebia nada.

Então, comecei a pensar que precisava alocar a memória para o pchar e que fazê-lo da maneira original era ter um ponto de pchar na memória que nem sempre seria o que estava lá quando a função foi chamada originalmente. Então agora eu tenho isso

Result := StrAlloc(128);
Strcopy(Result,PAnsiChar(Hash(Hash(Code,1,128),2,128)));

Mas isso me deixa com a necessidade de limpar a memória alocada no final do programa, o que eu faço com

StrDispose(Pstr);    

Portanto, a pergunta de US $ 64 é: Preciso alocar memória ao retornar um PChar de uma função dentro de uma DLL ou posso apenas convertê-lo em um PChar?

questionAnswers(3)

yourAnswerToTheQuestion