相关疑难解决方法(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万
查看次数

什么是分段错误?

什么是分段错误?C和C++有什么不同吗?分段错误和悬空指针是如何相关的?

c c++ segmentation-fault

530
推荐指数
9
解决办法
55万
查看次数

分段错误的常见原因的确定列表

注意:我们有很多段错误问题,答案基本相同,所以我试图将它们折叠成一个规范的问题,就像我们对未定义的引用一样.

虽然我们有一个问题涉及分段错误是什么,但它涵盖了什么,但没有列出很多原因.最佳答案说"有很多原因",只列出一个,其他大多数答案都没有列出任何理由.

总而言之,我认为我们需要一个组织良好的社区wiki来讨论这个主题,它列出了所有常见原因(然后是一些)来获取段错误.目的是帮助调试,如答案的免责声明中所述.

我知道什么是分段错误,但是在不知道它们通常是什么样的情况下很难发现代码.虽然毫无疑问,有太多的内容无法详尽列出, C和C++ 中分段错误的最常见原因是什么?

c c++ segmentation-fault

56
推荐指数
1
解决办法
8623
查看次数