假设我有以下函数,它有一个类型为 T 的参数。该参数的生命周期是多少。
int* f()
{
int x=0;
int* ptr=&x;
return ptr; //i know this is undefined behavior.
}
所以在f()
函数中,当它被调用时,本地表达式将运行并且范围指向值的结尾将被删除。但我的问题是针对以下功能
void f2(int* y)
{
}
int main()
{
int p=0;
f2(&p);
cout<<p<<endl;
return 0;
}
这里,当我们调用f2()
的时候那个参数int* y
会被删除?因此,如果它删除的逻辑指向的值将被删除,即 p,为什么我可以使用 cout 看到 p 的值相同?那么f2的论点什么时候会被删除呢?什么时候函数的结束范围?或者是什么?