发布网友 发布时间:2022-10-16 21:39
共5个回答
热心网友 时间:2023-10-24 07:31
是因为指针未初始化或越界,访问到了未分配地址的空间。
#include<iostream>
usingnamespacestd;
intmain(){
intiYear,iMonth,iDay,iDays;boolbFlag=true;
cout<<"请输入日期(年/月/日):"<<endl;
scanf("%4d/%2d/%2d",&iYear,&iMonth,&iDay);
switch(iMonth)
{
case1:;
case3:;
case5:;
case7:;
case8:;
case10:;
case12:iDays=31;break;
case4:;
case6:;
case9:;
case11:iDays=30;break;
case2:if((iYear%4==0)&&(iYear%100!=0)||(iYear%400==0))iDays=29;
elseiDays=28;break;
default:bFlag=false;
}
if(bFlag)
cout<<"此日期对应月的天数是:"<<iDays<<endl;
else
cout<<"输出错误:"<<endl;
system("pause");
}
扩展资料
未初始化的内存
如:p已被分配了10个字节。这10个字节可能包含垃圾数据。
char*p=malloc(10);
垃圾数据
如果在对这个p赋值前,某个代码段尝试访问它,则可能会获得垃圾值,您的程序可能具有不可预测的行为。p可能具有您的程序从未曾预料到的值。
结合使用memset和malloc,或者使用calloc。
char*p=malloc(10);
memset(p,’’,10);
热心网友 时间:2023-10-24 07:31
程序里执行了无效的内存引用。热心网友 时间:2023-10-24 07:32
指针未初始化或越界,访问到未分配地址空间,触发了硬件的一般性访问异常,内核捕捉到异常后,会把你的运行环境 mp 到一个文件中,然后结束该进程。热心网友 时间:2023-10-24 07:32
scanf没加&时会出现这种情况。热心网友 时间:2023-10-24 07:33
数组越界;