矢量仍然存在吗?

hel*_*922 2 c++ visual-c++

std::vector<float> someOp(void)
{
    using namespace std;
    vector<float> results;
    // some operations done to results
    return results;
}

int main(void)
{
    using namespace std;
    vector<float> &results = someOp();
}
Run Code Online (Sandbox Code Playgroud)

someOp返回的向量是否存在于someOp()堆栈空间或main()堆栈空间中?

我倾向于认为它不会被复制/移动到main()堆栈空间,因为结果向量在两个方法中都具有相同的地址.

slu*_*ion 5

这两个都不是有效的C++(并且不会被g ++编译).

看起来你正试图存储对返回的引用results,但这是不可能的,因为返回results存在于堆栈框架中someOp,并且,虽然它将在someOp()返回后仍然存在,但将来会在某些时候被覆盖.