假设我们有以下(奇异)代码:
int* getPointer(int* p) {
int* x_p = nullptr;
int& x = *p;
if(x==7) {
x_p = &x;
}
return x_p;
}
Run Code Online (Sandbox Code Playgroud)
由于x分配了值p,我觉得这个代码是不安全的:当x超出范围时,它的关联对象可以被破坏,留下x_p无效状态.
但是,我测试了这段代码,它运行正常.我是幸运的还是x参考变量的事实是否改变了破坏序列?