H
hegyi
Unregistered / Unconfirmed
GUEST, unregistred user!
问题是这样的,我在子线程中申请了一个指针变量pCB,然后,将pCB的地址作为参数PostMessage给主线程,在主线程中处理完后,dispose()这个内存,会有什么问题?
我在使用时,发现送到主线程的每一个pCB内容都正确,但有些不让访问内存……
代码大致如下:
//类型定义
TcomBlock=record
UserID:integer;
end
pComBlock=^TcomBlock;
//在子线程中生成打针变量
var
pCBComblock;
.....
new(pCB)
pCB.UserID=1234;
postMessage(MainForm.handle,MessageType,integer(pCB),0);
//在主线程中(上述的MainForm)
procedure TMainForm.HandleMsg(var Message:TMessage);
var
pCBComBlock
UserID:Integer;
begin
pCB:=pComBlock(Message.WParam);//到这里,pCB的内容完全正确
UserID:=pCB^.UserID ;这里有时出错
....
//处理完事务后消除内存
dispose(pCB);
end;
//上述整个过程都不出错,但发送多个pCB时,有些可能出错
我在使用时,发现送到主线程的每一个pCB内容都正确,但有些不让访问内存……
代码大致如下:
//类型定义
TcomBlock=record
UserID:integer;
end
pComBlock=^TcomBlock;
//在子线程中生成打针变量
var
pCBComblock;
.....
new(pCB)
pCB.UserID=1234;
postMessage(MainForm.handle,MessageType,integer(pCB),0);
//在主线程中(上述的MainForm)
procedure TMainForm.HandleMsg(var Message:TMessage);
var
pCBComBlock
UserID:Integer;
begin
pCB:=pComBlock(Message.WParam);//到这里,pCB的内容完全正确
UserID:=pCB^.UserID ;这里有时出错
....
//处理完事务后消除内存
dispose(pCB);
end;
//上述整个过程都不出错,但发送多个pCB时,有些可能出错