修改为
function LogInfo(msg: UTF8String): Boolean; var p: PAnsiChar; len: Integer; begin len := Length(msg); GetMem(p, len + 1); Move(msg[1], p^, len); p[len] := #0; //for wm_log's freemem PostMessage(Form1.Handle, WM_LOG, WPARAM(p), len + 1); end; procedure TForm1.WM_Log(var msg: TMessage); var p: PAnsiChar; begin p := PAnsiChar(msg.WParam); Form1.Memo1.Lines.Add(p); FreeMem(p, msg.LParam); end;仍然泄漏,原因不明,仍然漏8byte
难道时代变了,在线程A里面GetMem的,不能在线程B里FreeMem了?
但是我把这些代码,单独拿出来,放在一个Proejct里测试时,同样在线程A里Get,在线程B里Free,却没有问题,真让人费解。不知道datasnap的框架里到底搞了什么。
没有评论:
发表评论