RE问题的常见原因

本文仅为问题收录贴,如有补充,敬请各位大佬发在聊天区,在下会定时更新^_^

这篇文章如果解决了你的问题,不要忘记来还愿啊~~

有时,当我们运行一个程序,久久没有输出,突然,传来一句话,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;
}

如果还有没有提到的情况,希望大家能在评论区补充^_^

  • 15
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值