小编zma*_*mac的帖子

C++ 什么是指针的作用域?

这里我有一些 C++ 代码都在 1 个 cpp 文件中:

struct Object
{
    int* data;
}

Object obj;

void pizza()
{
    int joe[] = {5, 3, 4, 7, 8};
    obj.data = joe;
}

int main()
{
    pizza();
    std::cout << obj.data[2];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

obj.data只是一个指向int数组的指针,我在pizza函数中初始化它,所以当它离开这个函数时,obj.data应该指向NULL,因为这个数据只存在于pizza的范围内。

但情况并非如此,当我 std::cout 该数组的值时,即使指针指向不再有效的数据,数据仍然存在。

这是如何工作的,数据是否被复制?这安全吗还是会导致问题?

c++ memory arrays pointers scope

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

标签 统计

arrays ×1

c++ ×1

memory ×1

pointers ×1

scope ×1