runtime error (运行时错误)其本意就是就是程序运行到一半,程序就崩溃了。
在oj上做题提交时出现RE可能有以下几个原因:
1.除以了0 。
2.数组越界:比如int a[8]; 却访问了使其a[100000]=9;,只能开大数组。
3.指针越界:比如int * p; p=(int *)malloc(10 * sizeof(int)); *(p+10000)=10;,需要重新申请空间。
4.使用已经释放的空间:如int * p; p=(int *)malloc(10 * sizeof(int));free(p); *p=10;,使用时注意仔细。
5.数组开得太大,超出了栈的范围,造成栈溢出:比如在主函数或用户函数种将数组开至a[100000000],函数内部(局部数组)承载不了这么大范围的数组,但是将其设置为全局变量可以避免。
6.还有可能是函数递归的时候传参时不正确(比如大小关系),导致递归溢出所定义范围。
当有提示信息时,分别对应以下:
1.Runtime Error(ARRAY_BOUNDS_EXCEEDED) // array bounds exceed 数组越界(错误1)
2.Runtime Error(DIVIDE_BY_ZERO) //divisor is nil 除以0
3.Runtime Error(ACCESS_VIOLATION) //illegal memory access 非法内存读取(错误6可能出现)
4.Runtime Error(STACK_OVERFLOW) //stack overflow 系统栈过载(错误5)
来源:https://www.cnblogs.com/theshorekind/p/12638497.html