DLL执行错误:原因是我从DLL中返回含有String类型的结构体指针。(200分)

  • 主题发起人 blackbeam
  • 开始时间
B

blackbeam

Unregistered / Unconfirmed
GUEST, unregistred user!
结构体指针定义如下:<br>ps = ^s;<br>s = record<br>&nbsp; a : String;<br>&nbsp; b : Integer;<br>end;<br><br>我的DLL有一个方法返回值是ps类型的<br>functoin test() : ps;<br>begin<br>&nbsp; ......;<br>end;<br><br>在调用DLL中的test方法时出现一大堆内存访问提示。哪位老兄有这方面的经验,盼复!<br>(另:我已经加入了ShareMem单元)
 
返回的指针所指的空间已经释放了!<br>
 
yeskert1, 能不能说得详细一些,谢谢了!
 
ps = ^s;<br>s = record<br>&nbsp; a : Pchar;<br>&nbsp; b : Integer;<br>end;<br>试试看<br>
 
这个问题我找到答案了,原来是在function返回的时候必须这样写:<br>function test() : ps<br>var<br>&nbsp; p : ps;<br>begin<br>&nbsp; New(p);<br>&nbsp; p^.a:='a';<br>&nbsp; p^.b:='b';<br>&nbsp; result:=p;<br>end;<br><br>这样调用者才能获得p的内容,谢谢大家了。
 
多人接受答案了。
 
顶部