问大家一个问题,和内存有关!
程序里处理数据的时候,出现一个系统提示框:“Out of Memory!”,然后机器内存一直增加不释放,
程序里用到一个变量:
vcetor <string> TString;
vector <TString> TStringArray;
vector <TStringArray> TStringTable;
我现在的数据是:
一个TStringTable,其中包含的字段如下:
Name ID Name ID Destription
"M1 " "1 " "S1 " "1 " "adfadfadafafafd "
……
这样的记录有8000行,在遍历的时候,出现上述所说的问题:“Out of Servie”,
有没有哪位高手遇到过?希望能赐教!
谢谢!
[解决办法]
这种情况得看你代码
如果你一直push,而不pop的话,内存当然是一直增加的,随着时间的增长将会死机
[解决办法]
将Push代码
和遍历代码
整理出来
[解决办法]
vector换成list可能效率更高一点
[解决办法]
有类似一个问题,借LZ地盘一用
如果有一个字符串是通过若干次连接而成,不知用哪个类型?比如:
AnsiString tmp= " ";
for(i=0;i <10000;i++)
{
tmp+=IntToStr(i)+ ", ";
}
不知这样的效率如何?或是有更好的类型支持这种操作?
[解决办法]
楼上的:你用STL的 <sstream> 中的stringstream流!
stringstream ss;
ss < <i < < ', ';
最后再用tmp = ss.str();
[解决办法]
LZ:你是搞了一个三维数组啊?我想你用二维就可以了
你可以用BCB自己带的TListString就可以了,不要用vector
[解决办法]
vcetor <string> TString;
这个代码使用的全部是Stack中的内存(注意:Stack 非常小)
换成vcetor <string> * TString = new vcetor <string>; //这样使用的是堆(Heap)内存。