在用devcpp编动态内存的时候总是出现这样的错误:[Error] ld returned 1 exit status 这是怎么回事啊,要怎么解决?

具体的程序如下
#include
#include
void min(int)
{ int *p;
extern int n;
scanf("%d",&n);
p=(int *)malloc(n*sizeof(int));
int a[n]; int temp;
for(int i=0;i<=n-2;i++)
{
for(int j=i;j if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp; }
}
for(int k=0;k<=n-2;k++)
printf("%d,",a[k]);
printf("%d",a[n-1]);
}
int main()
{

int *p,n;
int i;int a[n];
for(i=0;i<n;i++)
scanf("%d",&a[i]);
void min(int);
free(p);
return 1; }

for(int j=i;j if(a[j]>a[j+1])
这里完全不对

void min(int);
这是函数定义,不是调用

free(p);
p没有初始化,你free肯定不行