c++ - C++中指向局部变量的指针

标签 c++ pointers local-variables

<分区>

Possible Duplicate:
Can a local variable's memory be accessed outside its scope?

我在 C++ 中有以下代码

int* foo()
{
    int myVar = 4;
    int* ptr = &myVar;
    return ptr;
}

int main()
{
   printf("val= %d", *foo());
   return 0;
}

我得到的输出是:

val = 4

所以我的问题是,既然 myVar 是一个局部变量,它不应该在函数返回后消失吗?指向它的指针不应该也是空指针吗?

最佳答案

So my question is since myVar is a local variable, should it be gone after the function returns?

是的。它会指向您设置的地址。但是,该区域是该功能的本地区域。在它指向的内容超出范围后,假设它不属于您。

这是不正确的:

uint8_t* p = (uint8_t*)malloc(count);
free(p);
p[0] = 1;

但您或您的工具更难诊断错误,因为该区域将存在于堆栈中(除非优化掉)。

and shouldn't the pointer to it be a null pointer as well?

没有。 C 和 C++ 不会为您管理这个。

关于c++ - C++中指向局部变量的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10038470/

相关文章:

c++ - 如何在变量名中放置空格?

pointers - 如何在 D 中声明一个指向非常量/可变数据的常量指针?

C++ 静态局部变量不改变值

javascript - 使用局部变量(而不是重复的属性访问)是否会损害性能?

c++ - 如何在 CGI 应用程序中解析 HTML 文件并修改其内容? C++

c++ - 在Qt中保存下载的文件

C++知识产权保护/反逆向

c - 在 C 中使用限制指针时,可以使用其初始标识符更改变量吗?

c - 指针地址相乘

java - 使用局部变量来保存全局变量的目的是什么?