在我的DLL中的Delphi中,我必须分配一个函数的return pchar
我有一个DLL,其中我有一个返回pchar的函数。 (为了避免使用borlndmm)我最初做的是将字符串作为pchar转换并返回
Result := pChar(SomeFuncThatReturnsString)
但是我90%的时间都得到了预期的结果,而其他时候我什么也得不到。
然后我开始认为我需要为pchar分配内存,并且我原来的方式就是拥有一个pchar指向内存,这并不总是在最初调用函数时的内容。所以我现在有这个
Result := StrAlloc(128);
Strcopy(Result,PAnsiChar(Hash(Hash(Code,1,128),2,128)));
但这让我不得不清理程序端的已分配内存
StrDispose(Pstr);
所以64美元的问题是:从DLL中的函数返回PChar时我是否必须分配内存,或者我可以将其转换为PChar?
没有找到相关结果
已邀请:
3 个回复
屡倒雷图
这允许应用程序决定何时以及如何分配内存(堆栈与堆,重用内存块等):
如果这不是你的选择,那么你需要让DLL分配内存,将其返回给应用程序使用,然后让DLL导出一个额外的函数,当完成传递指针时应用程序可以调用该函数回到DLL中解放:
矾醒忻
凄挡