存储指向函数返回值的指针

时间:2017-06-21 15:51:02

标签: c++ pointers memory

假设我有一个函数foo(),它通过值

返回类A的对象
A foo() {
    A a(...);
    return A;
}

现在在函数bar()中,我存储了一个指向A

的返回值的指针
void bar() {
    A* pA = &foo();
}

返回值是否会超出bar()末尾的范围,或者是否需要在pA上调用delete?

1 个答案:

答案 0 :(得分:4)

比这更糟糕!

pA中解除引用bar的行为将未定义。这是因为foo()返回一个匿名临时用户,其生命周期仅限于呼叫站点的语句。

您只有在使用delete的分配结果所获得的指针上调用new