请问TStrings是否有大小限制?
我作了一个服务端程序,使用indy的TIdTelnet控件通过telnet接收一个unix服务器发送的信息,然后把它保存在一个TStrings中。同时用另一个线程对其进行分析,再发往另一个服务端程序。功能上没什么问题,可是运行一段时间(大半天左右)后该程序就会突然消失。请问各位大虾这是怎么回事儿?是不是用来保存信息的TStrings有大小限制,超出该限制就会出问题?unix服务器发送的信息挺多的,用txt来保存的话,一个小时大概2.5MB左右。
[解决办法]
用TThreadList来进行保存/处理/删除,TStrings的count也是有限制的
[解决办法]
好像TStrings的限制是32767
[解决办法]
一个小时2.5MB这个不大,关键点肯定在于你的程序当中多线程访问没有控制好。或者内存分配有问题。
前两天弄个小东西,查了两天两夜不知道问题出在哪里,查来查去实在想不到代码当中有什么问题,后来偶然一次调试状态下也出现问题,跟了进去,原来是内存管理当中有问题,内存片的引用计数出错,再查一下原来是IsMultiThread在捣鬼,默认情况下只有调用BeginThread才会给它置为True,而我在创建线程之前已经分配了一堆内存,于是产生内存访问违例,并且地址是重复的。
[解决办法]
内存访问出错造成程序崩溃,这和你的具体代码有关,别人没法帮你分析
在调试状态下检查代码吧,看看是哪一行代码出错
如果是不定时出现,就用下面的办法
http://topic.csdn.net/t/20041130/12/3601416.html