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

结构与联盟之间的区别

是否有任何好的例子来区分a struct和a union?基本上我知道它struct使用其成员的所有内存并union使用最大的成员内存空间.是否有其他操作系统级别的差异?

c struct unions

393
推荐指数
10
解决办法
34万
查看次数

当空指针不是所有位为零时,如何正确编写C/C++代码

正如comp.lang.c常见问题所述,有一些架构,其中空指针不是所有位零.所以问题是实际检查以下结构:

void* p = get_some_pointer();
if (!p)
    return;
Run Code Online (Sandbox Code Playgroud)

我是否p与机器相关的空指针进行比较或者我是否p与算术零进行比较?

我应该写

void* p = get_some_pointer();
if (NULL == p)
    return;
Run Code Online (Sandbox Code Playgroud)

相反,为这样的架构做好准备还是仅仅是我的偏执?

c c++ computer-architecture

69
推荐指数
4
解决办法
4800
查看次数