最近用DELPHI7写了一个程序,里面有不少内存操作.
结果测试时发现:在单核心的CPU上,运行稳定,在普通的双核机器上,内存就出现严重泄露问题.
请高手指点一二.先行谢过了!紧急.
结果测试时发现:在单核心的CPU上,运行稳定,在普通的双核机器上,内存就出现严重泄露问题.
请高手指点一二.先行谢过了!紧急.
解决方案 »
- delphi问题 着急!!!
- CSDN现在的查询真烂
- 【醒目】如何遍历TChart(TSeries)里面的值呢?
- 将查询的数据在一个新的DBGrid中显示
- ACCESS查询日期字段的问题,耶闷!!!!!
- 怎样将TreeView的根节点隐起来并将所有要建的节点都挂在这个隐形的根节点上?
- 我想编个小程序,功能是用户启动IE时要求输入密码,然后才能浏览网页,请大家提示一下。
- 关于表的复制(ACCESS 表)
- 嘻嘻嘻 请你来说说,维护程序有哪些痛苦的事?嘻嘻嘻嘻
- SourceSafe 的中心数据库大概是怎么设计的? 哪位能说说。
- delphi listView vrlist 方式如何加入垂直滚动条?
- ShellExecute控制邮件换行
很多线程,有WINDOWS API级别的内存分配与释放.
弄不明白,为啥跟CPU有关系了.
这就没人能帮你了,你的代码中有问题的地方可能太多了
2 如果问题很多,单核下运行为什么又没有问题呢?
主代码如下:
while not bRequestExit do
begin
Sleep(20);
try
if not idtcpclnt.Connected then
Continue;
SetLength(bbuf,0);
idtcpclnt.IOHandler.ReadBytes(bbuf,SizeOf(VideoPack));
BytesToRaw(bbuf,VideoPack,SizeOf(VideoPack));
SetLength(bbuf,0);
idtcpclnt.IOHandler.ReadBytes(bbuf,VideoPack.Videodata.VideoSize);
BytesToRaw(bbuf,frame_buf,VideoPack.Videodata.VideoSize);
Size := VideoPack.Videodata.VideoSize;
disp_buffer := Pointer(GlobalAlloc( GMEM_FIXED or GMEM_ZEROINIT ,Size));
try
if convert.Decode(disp_buffer,Integer(PIX_FMT_BGR24),frame_buf,size) then
begin
Self.DisplayVideo(disp_buffer);//就是这个函数内部运行有问题
end;
finally
GlobalFree(DWord(disp_buffer));
Freeandnil(VideoPack);
end;
except on e:exception do
end;
end;
或者你可以发表一篇论文颠覆人们以往对多核cpu的认识:我写了一个线程安全的程序,同步绝对没问题,只是在双核的机器上出毛病,所以双核的cpu都是有问题的
IsMultiThread := True;
AnsiString test(void)
{
AnsiString a = "1";
return a;
}
我这里的多线程只是有多个任务要处理,加强界面显示而已.
这个根本就没有同步!
@Seamour
还是谢谢你的提醒吧,最少你在关注我的问题.
vdwndw.Canvas.CopyRect(rect2,SpBmp.Canvas,rect1);
//vdwndw:TVideoWindow
这种模式下,在单核CPU上能安全释放掉使用的内存,但双核心上则不能.
感谢楼上各位了