相关疑难解决方法(0)

可以在其范围之外访问局部变量的内存吗?

我有以下代码.

#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

怎么会这样?本地变量的内存不能在其功能之外无法访问吗?

c++ memory-management local-variables dangling-pointer

990
推荐指数
19
解决办法
26万
查看次数

为什么这个简单的程序会导致控制台出现“puppies puppies puppies”?

这个奇怪的事情发生了,我设法把它浓缩成这个小程序:

int main()
{
    int a[20];
    a[21] = 5;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这个程序导致在puppies puppies puppies终端上不断滚动,直到我点击 control-C。这是怎么回事?!

编辑:这个问题有什么不清楚的地方?请告诉我,以便我改进它。

c++ arrays undefined-behavior

10
推荐指数
0
解决办法
253
查看次数