该死的dll,这个怎么解决啊(20分)

  • 主题发起人 主题发起人 loskiller
  • 开始时间 开始时间
L

loskiller

Unregistered / Unconfirmed
GUEST, unregistred user!
Pi=array of integer;<br>function GetUserInfo:Pi;stdcall;<br><br>function GetUserInfo:Pi;stdcall;<br>var<br>&nbsp; UserInfo:Pi;<br>begin<br>&nbsp; SetLength(UserInfo,1);<br>&nbsp; Result:=UserInfo;<br>end;<br><br>程序中调用:<br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; x:pi;<br>begin<br>&nbsp; x:=GetUserInfo;<br>end;<br>当x为局部变量时,一点就有错<br>为全局时退出就报错。
 
你setlength分配的空间,最后你没释放掉。
 
大哥,在那释放啊,如果在ddl内部释放,那么GetUserInfo返回的是什么啊。<br>我改为下面那样还是不行<br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; x:pi;<br>begin<br>&nbsp; x:=GetUserInfo;<br>&nbsp; 。。。。<br>&nbsp; x:=nil;<br>end;<br>
 
Ppi=^pi;<br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; x:Ppi;<br>begin<br>&nbsp; new(x);<br>&nbsp; x^:=GetUserInfo;<br>&nbsp; x^[0]:=1;<br>&nbsp; caption:=format('%d',[x^[0]]);<br>end;<br>
 
用完以后setlength(x,0)
 
多谢rctm和satanmonkey,请问rctm为什么要这样做呢
 
后退
顶部