程序优化和内存碎片的一个问题
定义了一个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--};这部花费太多时间,因为大小总是在变化,请问我该怎么办?