我程序最近很不稳定。老是执行一会就自动关闭掉。后来调试了一个晚上找到了原来是堆溢出。但是仔细一看的时候
溢出的地方仅仅是一个变量名,不知道何解。百度过几次。有的人说是不断循环赋值而造成的错误(而我的
这个函数正好就是多个线程同时运行时必要调用到的函数),不知道是不是因为这样而造成溢出的。望各位
老大能给个解释!!该怎么解决这样的问题呀
溢出的地方仅仅是一个变量名,不知道何解。百度过几次。有的人说是不断循环赋值而造成的错误(而我的
这个函数正好就是多个线程同时运行时必要调用到的函数),不知道是不是因为这样而造成溢出的。望各位
老大能给个解释!!该怎么解决这样的问题呀
解决方案 »
- 我想把一个RIDL文件转换为ACTIVEX,该怎么做?在线等待
- DX高手进(Win32 SDK(API)编程)!!! 不能得到预想的结果!!!!(小弟初学DX望指点一二,感激不尽!!!)
- delphi跟msxml的问题
- 编译错误求助。。。
- 大虾们帮帮忙呀!!!!!!!!!!!!!!!!!!
- 刚刚看到两本书《Windows Core API开发》和《Windows Graphical API开发》。说是国内没有买的,不知道有没有哪位兄台知道哪里有下的,我
- TtreeNode.data 如何写数据
- 各位GG,MM,谁用Delphi书里介绍的方法做过帮助文件。帮帮我,我有许多问题不明白。
- 能不能仔细讲讲如何发送e-mail,带认证的,用delphi5,谢谢了
- 高手帮我看看这个问题?
- Application.ProcessMessages与CPU占用率
- 如何读取银行卡本次消费刷了多少钱?
,在DELPHI里使用BeginThread函数去创建线程,虽然最终调用的还是API CreateThread,但是BeginThread里加入了 IsMultiThread参数,DELPHI通过此变量来了解进程中何时有多个线程在运行,只有知道了。它才会保护其内部结构
var //如: RegexaAlla(内容,头部, 进或退值, 尾部 进或退值 listview 条数 )
i,e:Integer;
url,Surl:string;
begin
for i:=0 to CountI do //有时循环一百次。有时十次。有时三十次。看得到的内容
begin
Delete(memostr,1,Pos(Rextop,memostr)+RextopI+length(Rexup)+RexupI);
Surl:=Copy(memostr,1,Pos(Rexup,memostr)-1);
Delete(Surl,Pos('?',Surl),100);
e:=pos('http://',Surl); //下面是得到地址xx.com 而listviewcaption和ListviewCaptiona是一个全局变量
if (e>=1) and (e<20) and (Pos(Hostdz(Surl,2),ListviewCaption+ListviewCaptiona)<1)
and (BoxCheckurl(Surl,listbox))then
begin
try //不知道为什么在url赋值时出错。有时出错有时不出错。很难捕捉
url:=url+surl+#13#10; //还会自动判断有没有重复值 有时这里会出现Access violation at address
except
//错误后处理的函数位置
end;
surl:=Hostdz(Surl,2);
try //将得到的地址http://www.xx.com分割成xx.com 然后赋给全局变量ListviewCaptiona 经常出现下面的错误
ListviewCaptiona:=ListviewCaptiona+surl+'|'; //将以前搜索过的值储存起来。 有时这里会出现Access violation at address
except
//错误后处理的函数位置
end;
end;
end;
result:=url;
end;
ListviewCaptiona:=ListviewCaptiona+surl+'|';
另外看你函数中并不需要使用tlistview这样的组件作为参数。只需要返回一个字符串作为caption就可以了
BoxCheckurl 这是啥
另外多个线程处理的时候,memostr有没有可能同时传同一个字符串?