对的,但两个指针同时指向一个貌似只需要释放一次。
#include"stdio.h"
#include"stdlib.h"
#include"conio.h"
#include"string.h"
#define N 20000
//#define NULL 0
int *p1,*p2;
int i;
int num[10];
void gen_rand (int band)
//产生随机数,存储在分配的空间中
{
for(i=0;i<N;i++)
{
*p1 = rand() % band;
printf("%d
", *p1);
p1++;
}
}
void display()
// 显示输出统计函数
{
for(i=0;i<10;i++)
{
printf("The number of %d is:
",i);
printf("%d\n",num[i]);
}
}
void stat(int *p)
//统计随机数中每个数出现的次数
{
p=p2;
for(i=0;i<N;i++)
{
switch (*p)
{
case 0: num[0]++;
break;
case 1: num[1]++;
break;
case 2: num[2]++;
break;
case 3: num[3]++;
break;
case 4: num[4]++;
break;
case 5: num[5]++;
break;
case 6: num[6]++;
break;
case 7: num[7]++;
break;
case 8: num[8]++;
break;
case 9: num[9]++;
break;
default :break;
}
p++;
}
}
void main()
{
p1=(int *)malloc(N * sizeof(int));
//分配空间
if(p1==NULL)
{
printf("Malloc memoryspace failed.");
exit(1);
}
printf("\n%x(HEX)",p1);
p2=p1;
printf("\n%x(HEX)",p2);
memset(p1,0,N * sizeof(int));
//初始化内存
gen_rand(10);
stat(p1);
display();
printf("\n%x(HEX)",p1);
for(i=0;i<N;i++)
{
p1--;
}
printf("\n%x(HEX)",p1);
printf("\n%x(HEX)",p2);
free(p1);
free(p2);
p1=NULL;
p2=NULL;
getch();
}