En Delphi en mi DLL, ¿debo asignar el pchar de retorno de una función?

Tengo una DLL en la que tengo una función que devuelve un pchar. (para evitar tener que usar borlndmm) Lo que estaba haciendo originalmente era lanzar una cadena como un pchar y devolver eso

Result := pChar(SomeFuncThatReturnsString)

Pero recibía los resultados esperados el 90% del tiempo y las otras veces no obtenía nada.

Luego pensé que necesitaba asignar la memoria para el pchar y que hacerlo de la manera original era tener un punto de pchar en la memoria que no siempre iba a ser lo que estaba allí cuando se llamó originalmente a la función. Entonces ahora tengo esto

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

Pero esto me deja con tener que limpiar la memoria asignada en el extremo de los programas que hago con

StrDispose(Pstr);    

Entonces, la pregunta de $ 64 es: ¿Tengo que asignar memoria al devolver un PChar desde una función dentro de un archivo DLL o puedo enviarlo a un PChar?

Respuestas a la pregunta(3)

Su respuesta a la pregunta