#2146. C++-编译-Process exited after xxx seconds with return value 一个很大的数
C++-编译-Process exited after xxx seconds with return value 一个很大的数
Background
Description
请检查以下问题
1. 调用没有对象的野指针,建议在定义指针的时候new或者malloc一块空间给它(不要直接给指针赋0)
比如:
int* p; //p是没有对象的野指针
*p=3; //对野指针所指区域赋值
建议改成(malloc需要加<stdlib.h>头文件,C++中直接用new),:
int* p=(int*)malloc(sizeof(int)); //malloc函数返回类型是void*,需要强制类型转化一下
int* p=new int;
2. 指针并不是野指针,但是它指向NULL或者指向受系统保护的区域
比如以下两种情况:
int* p=0;
int* p=NULL;
建议和1一样,分配一块动态内存
另外注意的是,scanf忘记加&,也会因为这个原因报Segmentation fault
如:
int a=0;
scanf("%d",a); //忘加&
3. 下标越界,访问某个数组超出其定义下标的值
比如:
int array[3]={0}; //只定义到3
cout<<array[4]; //但是尝试访问下标为4的地方
值得一提的是,现在部分编译器已经将其优化,进而允许用户进行这一危险行为而不会报错,在写代码的时候应该避免访问超出定义的下标
4.栈溢出
写递归的时候,递归次数太多
比如:
void operate(){
if(true) operate(); //自己调用自己,无限调用
else return;
}
6.除零错误(in Dev)
Dev独有,同本文第一条错误,分母为零等算式错误
Format
Input
Output
Samples
Limitation
1s, 1024KiB for each test case.