我有一段 C++ 代码。
int* func(int n) {
int* v= &n;
return v;
}
int main()
{
int* c = func(5);
int* k = func(9);
cout<<*c;
}
这段代码返回的是9,而不是5。当我将函数改为:
int* func(int n) {
int* v= new int(n);
return v;
}
这将如预期地返回一个5。第一个为什么不起作用,但第二个起作用?
n
是一个本地变量,其生命周期在函数返回时结束。返回指向它的指针是毫无意义的,因为指针会立即失效。 - Some programmer dude