W
world793
Unregistered / Unconfirmed
GUEST, unregistred user!
我在dll中定义了一个链表结构
pback=^Tback
Tback=record
idchar;
datachar;
nextback;
end;
其中一个过程作如下处理
procedure getdata;
var ptback;
begin
new(pt);
pt^.id:=pchar('0012345');
pt^.data:=pchar('36548');
pt^.next:=nil;
sendmessage(winhandle,wm_mymessage,WPARAM(pt),0);
freeback(pt);
end;
在exe程序当中也定义了一个和pback链表结构(其类型与dll中相同),在窗体消息处理过程如下
WndProc(var Message: TMessage)
var backback;
begin
case message.message of
wm_mymessage:begin
back:=pointer(Message.wParam);
showmessage(back^.data);
freeback(back);
end;
end;
我在dll和exe中分别定义了如下释放链表的过程
procedure freeback(var pback);
var qback;
begin
while p<>nildo
begin
q:=p;
p:=p^.next;
dispose(q);
end;
end;
但是执行exe文件时老是报错提示 invalid pointer operation;
当我去掉dll中的freeback(pt)时,再调试exe程序,前5-6次程序可以正常执行,但随后就出现错误Access violation at address 。。。。。。的错误,请问该如何处理阿
pback=^Tback
Tback=record
idchar;
datachar;
nextback;
end;
其中一个过程作如下处理
procedure getdata;
var ptback;
begin
new(pt);
pt^.id:=pchar('0012345');
pt^.data:=pchar('36548');
pt^.next:=nil;
sendmessage(winhandle,wm_mymessage,WPARAM(pt),0);
freeback(pt);
end;
在exe程序当中也定义了一个和pback链表结构(其类型与dll中相同),在窗体消息处理过程如下
WndProc(var Message: TMessage)
var backback;
begin
case message.message of
wm_mymessage:begin
back:=pointer(Message.wParam);
showmessage(back^.data);
freeback(back);
end;
end;
我在dll和exe中分别定义了如下释放链表的过程
procedure freeback(var pback);
var qback;
begin
while p<>nildo
begin
q:=p;
p:=p^.next;
dispose(q);
end;
end;
但是执行exe文件时老是报错提示 invalid pointer operation;
当我去掉dll中的freeback(pt)时,再调试exe程序,前5-6次程序可以正常执行,但随后就出现错误Access violation at address 。。。。。。的错误,请问该如何处理阿