c语言释放空间 想知道我释放的方式对不对,如果不对会造成什么后果(因为编译通过)
#define_crt_secure_no_warnings#include<stdio.h>#include<time.h>#include<stdlib.h>intm...
#define _crt_secure_no_warnings
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
int *yuanshu=(int*)malloc(4*sizeof(int)); // int *yuanshu=new int[4];
int *caishu=(int*)malloc(4*sizeof(int)); //int *caishu=new int[4];
int s,j,a,count=0;
int oknum,okpos=0;
time_t t;
srand((unsigned)time(&t));
//srand((int)time(0));
a=(int)(10000*rand()/(RAND_MAX+1));
if(a>99&&a<1000)
{caishu[0]=0;caishu[1]=a/100;caishu[2]=a/10%10;caishu[3]=a%10; }
else if(a>9&&a<100)
{caishu[0]=0;caishu[1]=0;caishu[2]=a/10;caishu[3]=a%10; }
else if(a<9)
{caishu[0]=0;caishu[1]=0;caishu[2]=0;caishu[3]=a; }
else
{yuanshu[0]=a/1000;yuanshu[1]=a/100%10;yuanshu[2]=a/10%100%10;yuanshu[3]=a%10; }
printf("我有一个四位数你猜是多少:\n");
while(okpos<4)
{
oknum=0;okpos=0;
printf("你猜:");
scanf("%d",&s);
if(s<0||s>10000)
{printf("不符合规则!!\n"); continue; }
if(s>99&&s<1000)
{caishu[0]=0;caishu[1]=s/100;caishu[2]=s/10%10;caishu[3]=s%10; }
else if(s>9&&s<100)
{caishu[0]=0;caishu[1]=0;caishu[2]=s/10;caishu[3]=s%10; }
else if(s<9)
{caishu[0]=0;caishu[1]=0;caishu[2]=0;caishu[3]=s; }
else
{caishu[0]=s/1000;caishu[1]=s/100%10;caishu[2]=s/10%100%10;caishu[3]=s%10; }
for(int i=0;i<4;i++)
{
for(int k=0;k<4;k++)
if(yuanshu[i]==caishu[k])
{
if(i==k)
okpos++;
oknum++;
caishu[k]='a'; break;
}
}
printf("猜对了%d位数,位置正确的有%d位\n",oknum,okpos);
count++;
}
for(int i=0;i<4;i++)
printf("%d",yuanshu[i]);
printf("\n恭喜你智商好高哦,这么快就猜出来了,共猜了%d次,(*^__^*) 嘻嘻……\n",count);
int aa;
scanf("%d",&aa);
free(yuanshu);
free(caishu);
//如果在c++ 中用的是new 申请的空间能不变这样释放空间delete []yuanshu;
// delete []caishu;
fflush(stdin);
return 0;
} 展开
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
int *yuanshu=(int*)malloc(4*sizeof(int)); // int *yuanshu=new int[4];
int *caishu=(int*)malloc(4*sizeof(int)); //int *caishu=new int[4];
int s,j,a,count=0;
int oknum,okpos=0;
time_t t;
srand((unsigned)time(&t));
//srand((int)time(0));
a=(int)(10000*rand()/(RAND_MAX+1));
if(a>99&&a<1000)
{caishu[0]=0;caishu[1]=a/100;caishu[2]=a/10%10;caishu[3]=a%10; }
else if(a>9&&a<100)
{caishu[0]=0;caishu[1]=0;caishu[2]=a/10;caishu[3]=a%10; }
else if(a<9)
{caishu[0]=0;caishu[1]=0;caishu[2]=0;caishu[3]=a; }
else
{yuanshu[0]=a/1000;yuanshu[1]=a/100%10;yuanshu[2]=a/10%100%10;yuanshu[3]=a%10; }
printf("我有一个四位数你猜是多少:\n");
while(okpos<4)
{
oknum=0;okpos=0;
printf("你猜:");
scanf("%d",&s);
if(s<0||s>10000)
{printf("不符合规则!!\n"); continue; }
if(s>99&&s<1000)
{caishu[0]=0;caishu[1]=s/100;caishu[2]=s/10%10;caishu[3]=s%10; }
else if(s>9&&s<100)
{caishu[0]=0;caishu[1]=0;caishu[2]=s/10;caishu[3]=s%10; }
else if(s<9)
{caishu[0]=0;caishu[1]=0;caishu[2]=0;caishu[3]=s; }
else
{caishu[0]=s/1000;caishu[1]=s/100%10;caishu[2]=s/10%100%10;caishu[3]=s%10; }
for(int i=0;i<4;i++)
{
for(int k=0;k<4;k++)
if(yuanshu[i]==caishu[k])
{
if(i==k)
okpos++;
oknum++;
caishu[k]='a'; break;
}
}
printf("猜对了%d位数,位置正确的有%d位\n",oknum,okpos);
count++;
}
for(int i=0;i<4;i++)
printf("%d",yuanshu[i]);
printf("\n恭喜你智商好高哦,这么快就猜出来了,共猜了%d次,(*^__^*) 嘻嘻……\n",count);
int aa;
scanf("%d",&aa);
free(yuanshu);
free(caishu);
//如果在c++ 中用的是new 申请的空间能不变这样释放空间delete []yuanshu;
// delete []caishu;
fflush(stdin);
return 0;
} 展开
展开全部
如果在对象数组一定要用delete[],释放内存之前会调用析构函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的代码写的好恶心~
追问
......俺是菜鸟 谅解下 再说 这个只是第一次的 我改了 这个不能达到效果 我只是问下 释放空间的问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询