while(c[j]>b[d]&&d<=uu)
d++;
if(c[j]>b[uu])
b[uu+1]=c[j];
else
for(l=uu+1;l>d;l--)
b[l]=b[l-1];
{
}
}
r=r-c[j];
}
b[d]=c[j];
uu++;
}
main()
{
int i=0,n=0,p,k;
printf("请输入内存大小\n");
scanf("%d",&total);
printf("请输入分配次数\n");
scanf("%d",&num);
k=1;
while(k=0;i--)
{
}
for(i=0;i<=num-1;i++)
{
}
b[0]=total;
uu=0;
int left;
left=total;
layer++;
k=k*2;
c[i]=c[i+1]*2;
b[i]=0;
-5-
f=0;
for(i=0;i<=uu;i++)
{
}
if(p
left)
printf("剩下的空间小于分配值,无法分配\n");
else
{
if(uu==-1)
f=0;
else
{
}
if(f==0)
printf("碎片太多,无法分配\n");
else
{
k=1;
while(k}
}
n++;
}
printf("%d\n",nn);
e=malloc(sizeof(int)*nn);
for(i=0;i<=nn-1;i++)
e[i]=1;
n=nn;
while(n!=0)
{
}
free(c);
free(a);
p=rand()%nn;
//scanf("%d",&p);
if(e[p]==1)
{
}
freeid(p);
e[p]=0;
printf("释放的内存为");
printf("%d\n",a[p].length);
printf("还可以使用的内存为\n");
if(uu==-1)
printf("0");
else
for(i=0;i<=uu;i++)
printf("%d
printf("\n");
n--;
",b[i]);
free(b);
free(e);
system("pause");
return 0;
}
测试案例
输入内存 2048 分配次数 4
-7-
输入内存为 2048 分配次数为 7
-8-