1N5*_*818 31 c++ stack-overflow segmentation-fault
出于好奇,我正在尝试生成堆栈溢出.此代码根据OP生成堆栈溢出,但是当我在我的机器上运行它时,它会生成分段错误:
#include <iostream>
using namespace std;
int num = 11;
unsigned long long int number = 22;
int Divisor()
{
int result;
result = number%num;
if (result == 0 && num < 21)
{
num+1;
Divisor();
if (num == 20 && result == 0)
{
return number;
}
}
else if (result != 0)
{
number++;
Divisor();
}
}
int main ()
{
Divisor();
cout << endl << endl;
system ("PAUSE");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此外,根据这篇文章,一些例子也应该做同样的事情.为什么我会得到分段错误呢?
Lun*_*din 13
你本质上是在问:未定义行为的行为是什么?
答案是:未定义的行为是未定义的行为.什么都可能发生.
研究为什么在特定系统上获得某种未定义的行为通常是毫无意义的练习.
在堆栈溢出的情况下,程序可能会覆盖RAM中的其他变量,或者破坏运行函数自身的返回地址,或者尝试修改其给定地址范围之外的内存等.根据系统的不同,您可能会遇到硬件异常和各种错误信号如SIGSEGV(在POSIX系统上),或突然程序崩溃,或"程序似乎工作正常",或其他.
| 归档时间: |
|
| 查看次数: |
3047 次 |
| 最近记录: |