我有以下代码.
#include <iostream>
int * foo()
{
int a = 5;
return &a;
}
int main()
{
int* p = foo();
std::cout << *p;
*p = 8;
std::cout << *p;
}
Run Code Online (Sandbox Code Playgroud)
而代码只是运行而没有运行时异常!
输出是 58
怎么会这样?本地变量的内存不能在其功能之外无法访问吗?
这个奇怪的事情发生了,我设法把它浓缩成这个小程序:
int main()
{
int a[20];
a[21] = 5;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这个程序导致在puppies puppies puppies终端上不断滚动,直到我点击 control-C。这是怎么回事?!
编辑:这个问题有什么不清楚的地方?请告诉我,以便我改进它。