C++ 存储指向函数返回值的指针
假设我有一个函数foo(),它通过值返回类a的对象C++ 存储指向函数返回值的指针,c++,pointers,memory,C++,Pointers,Memory,假设我有一个函数foo(),它通过值返回类a的对象 A foo() { A a(...); return A; } 现在在function bar()中,我存储了一个指向 void bar() { A* pA = &foo(); } 返回值是否会超出bar()末尾的范围,或者是否需要在pA上调用delete?比这更糟糕 在bar中取消引用pA的行为将是未定义的。这是因为foo() 您只调用删除指针,该指针是通过使用新建分配的结果获得的,比这糟糕得多 在bar中
A foo() {
A a(...);
return A;
}
现在在function bar()中,我存储了一个指向
void bar() {
A* pA = &foo();
}
返回值是否会超出bar()末尾的范围,或者是否需要在pA上调用delete?比这更糟糕强> 在
bar
中取消引用pA
的行为将是未定义的。这是因为foo()
您只调用删除指针,该指针是通过使用新建分配的结果获得的,比这糟糕得多强>
在bar
中取消引用pA
的行为将是未定义的。这是因为foo()
您仅对通过使用new
分配结果获得的指针调用delete
,或者是否需要对pA调用delete您不删除它。在此之前,返回值是否会超出bar()末尾的范围。你不能这样做。或者,如果你不删除它,是否需要在pA上调用delete。在此之前,返回值是否会超出bar()末尾的范围。你不能这么做。非常感谢,这很清楚。非常感谢,这很清楚。