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()堆栈空间,因为结果向量在两个方法中都具有相同的地址.
这两个都不是有效的C++(并且不会被g ++编译).
看起来你正试图存储对返回的引用results,但这是不可能的,因为返回results存在于堆栈框架中someOp,并且,虽然它将在someOp()返回后仍然存在,但将来会在某些时候被覆盖.
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |