bcb的一个问题,不好意思拿到这来问了
定义了一个List ResultList
for(int i=0;i<500000;i++)//此处本来是从数据库中取得数据,大小未知
{
PAList AStruct;//astruct是个结构
AStruct = new TAList;
AStruct->no1=random(4);
AStruct->no2=random(4);
ResultList->Add(AStruct);
} 后来删去相同的一部分
for(int i=0;i<ResultList->Count-1;i++)
{
for(int j=i+1;j<ResultList->Count;j++)
{
PAList AStruct;
AStruct = new TAList;
AStruct = (PAList) ResultList->Items[i];
PAList BStruct;
BStruct = new TAList;
BStruct = (PAList) ResultList->Items[j];
if((AStruct->no1==BStruct->no1)&&(AStruct->no2==BStruct->no2)) {ResultList->Delete[j];j--}; }
} 这个程序片断,运行速度很慢,估计是慢在一步步申请内存,而且可能产生了内存碎片--因为运行第二次就会提示系统内存不足,我现在想把链表改称数组形式,但是又有可能在if((AStruct->no1==BStruct->no1)||(AStruct->no2==BStruct->no2)) {ResultList->Delete[j];j--};这部花费太多时间,因为大小总是在变化,请问我该怎么办?
定义了一个List ResultList
for(int i=0;i<500000;i++)//此处本来是从数据库中取得数据,大小未知
{
PAList AStruct;//astruct是个结构
AStruct = new TAList;
AStruct->no1=random(4);
AStruct->no2=random(4);
ResultList->Add(AStruct);
} 后来删去相同的一部分
for(int i=0;i<ResultList->Count-1;i++)
{
for(int j=i+1;j<ResultList->Count;j++)
{
PAList AStruct;
AStruct = new TAList;
AStruct = (PAList) ResultList->Items[i];
PAList BStruct;
BStruct = new TAList;
BStruct = (PAList) ResultList->Items[j];
if((AStruct->no1==BStruct->no1)&&(AStruct->no2==BStruct->no2)) {ResultList->Delete[j];j--}; }
} 这个程序片断,运行速度很慢,估计是慢在一步步申请内存,而且可能产生了内存碎片--因为运行第二次就会提示系统内存不足,我现在想把链表改称数组形式,但是又有可能在if((AStruct->no1==BStruct->no1)||(AStruct->no2==BStruct->no2)) {ResultList->Delete[j];j--};这部花费太多时间,因为大小总是在变化,请问我该怎么办?
AStruct = new TAList;
ResultList->Add(AStruct); 赋值后应该可以释放AStruct吧
有了数据库才装进来干什么?
AStruct = new TAList;
ResultList->Add(AStruct); 赋值后应该可以释放AStruct吧
------------
不用delete[]释放,codeguard 会报错,没有释放,使用delete[]也会出现问题,delete也不行,那位能帮我测试一下,改成delphi也挺容易的,只要一两行数据就行了有什么理由一次装入50万个Struct 个数据?
有了数据库才装进来干什么?
--------------
因为是查询,处理,和显示需要用呀