free的问题
#include<stdio.h>#include<malloc.h>
int main()
{
int s[5010],t[2510];
int c,n,l;
scanf("%d",&c);
for(int i=0;i<c;i++)
{
scanf("%d",&n);
for(int k=0;k<n;k++)
s[k]=k+1;
while(1)
{
l=0;
for(int j=0;j<n;j++)
{
if(j%2!=1)
{
t[l]=s[j];
l++;
}
}
if(l==3) break;
free(s);//出错了。。。。。。。。。。。
int p=0;
for(int m=0;m<l;m++)
{
if(m%3!=2)
{
s[p]=t[m];
p++;
}
}
if(p==3) break;
free(t);//出错了。。。。。。。。。。。。。
}
if(l==3)
for(int q=0;q<3;q++)
printf("%d",t[q]);
else
for(int r=0;r<3;r++)
printf("%d",s[r]);
}
return 0;
}
free时出错了,出错的原因是什么,怎么改?