本文仅为问题收录贴,如有补充,敬请各位大佬发在聊天区,在下会定时更新^_^
这篇文章如果解决了你的问题,不要忘记来还愿啊~~
有时,当我们运行一个程序,久久没有输出,突然,传来一句话,process exited with value 3221225477
鬼故事讲完了,我们来说说,这是怎么一回事。
其实这就是RE了,当程序返回值开头为322122…的时候,那么你的程序就RE了。
在Windows是RE返回值可能是3221225725、3221225620 或者是 3221225477
我们来说说引起问题的原因
1.数组越界
数组在创建的时候是分配了内存的,但是如果你的数组越界了,那么越界的部分就是访问了没有分配内存的区域
举个例子:
#include <bits/stdc++.h>
using namespace std;
int main(){
int a[5];
a[10]=1;
return 0;
}
2.空指针
如果一个指针没有赋过值,或者指向的是一个已经被释放的局部变量的地址,就会RE
举个例子:
#include <bits/stdc++.h>
using namespace std;
int main(){
int *t;
cout<<*t;
return 0;
}
3.除以0
我们在小学就知道,不能除以0,我们在写代码的时候也不会这么写,但是有可能有一个变量变成了0,如果返回值是3221225620,注意结尾是5620时,可能你就是除以0了;
4.死递归
我们知道,递归是要调用栈的,如果你的递归不断地执行那么你就会RE,说白了就是运行内存不够了,一直递归下去造成了堆栈空间不足了。
5.访问空栈
如果一个栈、队列或者其他东西,你在他没有装东西的时候访问它,你就会RE
举个例子:
#include <bits/stdc++.h>
using namespace std;
int main(){
stack<int> k;
cout<<k.top();
return 0;
}
6.运算量大于了你的堆栈空间 本人吃过大亏
一般程序给出的堆栈空间只有1~2M,如果定义的变量超过了这个范围,就会出现栈溢出的异常。
这里诚心建议大家,如果定义的变量大于1000,就把它放在主函数外,让它成为一个全局变量吧,我初学时可是被这个坑了十几次
举个例子:
#include <bits/stdc++.h>
using namespace std;
int main(){
int a[1919810];
return 0;
}