首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

问大家一个有关问题,和内存有关

2012-04-05 
问大家一个问题,和内存有关!程序里处理数据的时候,出现一个系统提示框:“OutofMemory!”,然后机器内存一直增

问大家一个问题,和内存有关!
程序里处理数据的时候,出现一个系统提示框:“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)内存。

热点排行