这里我有一些 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 该数组的值时,即使指针指向不再有效的数据,数据仍然存在。
这是如何工作的,数据是否被复制?这安全吗还是会导致问题?