动态空间申请了以后一定一定要注意释放,否则会一直占用空间
关闭程序之后占用空间会自己释放,但如果是长期运行的大项目,会造成严重后果
#include<stdio.h> #include<stdlib.h> int main() { //初始化 int i,j,n; int *s; //用于申请动态数组空间 int count=0; //用于控制最终的输出个数 //读入数组长度 do { printf("请输入数组长度(正整数):"); scanf("%d",&n); }while(n<=0); //数组长度——下标从0开始,故申请n+1个 s=(int*)calloc(n+1,sizeof(int)); //calloc会自动初始化为0 //申请失败则终止程序 if(s==NULL) //调用失败则返回值为NULL { printf("申请动态空间失败"); exit(1); } //筛选法 s[0]=s[1]=1; //初始化都为0,就令非质数为1 for(i=2;i<=n;i++) if(s[i]==0) for(j=2*i;j<n+1;j+=i) s[j]=1; //否则s[]的值不变,仍为0 //输出质数(七个一行) for(i=0;i<=n;i++) if(!s[i]) { printf("%d\t",i); count++; if(count%7==0) printf("\n"); } printf("\n"); //#####释放动态数组空间#####很重要,一定要做,不然会有内存泄漏的风险 free(s); //头文件stdlib.h system("pause"); return 0; }