pchar를 반환하는 함수가있는 DLL이 있습니다.내 DLL에 델파이에서 함수의 반환 pchar를 할당해야합니까?
Result := pChar(SomeFuncThatReturnsString)
하지만 예상지고되었다가 시간의 90 %를 결과와 다른 시간은 내가 돌아올 것이라고 나는 원래 일을 한 PChar는 같은 문자열을 캐스팅하고 반환 무엇 (borlndmm를 사용하는 것을 피하기 위해) 아무것도.
그런 다음 pchar에 메모리를 할당해야한다는 생각이 들었습니다. 원래의 방법으로는 pchar 포인트가 메모리에 저장되는 것이 었습니다. 원래는이 함수가 원래 호출되었을 때 항상 존재하지는 않았을 것입니다. 그래서 나는 지금이
Result := StrAlloc(128);
Strcopy(Result,PAnsiChar(Hash(Hash(Code,1,128),2,128)));
을하지만이 그래서 $ (64) 질문은 내가
StrDispose(Pstr);
와 함께 할 프로그램의 끝에 할당 된 메모리를 정리하는 데 나를 잎 : 나는 할당해야합니까 메모리를 사용하여 DLL 내부의 함수에서 PChar를 반환하거나 PChar로 캐스팅 할 수 있습니까?
셧다운 기능을 드러내 기 때문에 Windows 3.1은 fdwReason = DLL_PROCESS_DETACH 일 때 DllMain의 모든 정리 작업을 수행합니다. –
이것이 내 대답과 무슨 상관이 있습니까?게다가 DllMain()에서는 항상 정리가 가능하지는 않지만 DllMain() 내부에서 직접 수행 할 수없는 작업이 있습니다. –
"WEP (Windows 종료 절차) 콜백 함수는 라이브러리가 언로드되기 전에 동적 연결 라이브러리 (DLL)에 대한 정리를 수행합니다." 당신이 제안한 그게 아니야? 다시 : 안전하지 않은 작업 - 예를 들어 주겠니? –