在对象的生存期内,是否存在任何可能发生变化的情况?

Rei*_*kin 14 c++ language-lawyer

我一直认为对象在相同的内存位置开始和结束其生命周期,但是最近我遇到了需要确定的情况。具体来说,我正在从标准中寻找一种保证,即无论编译器执行何种优化,构造对象的地址都将与其调用的析构函数相同,并且其析构函数确实是相同的,除非程序终止,否则请确保从该位置调用它。

我一直认为这些东西是理所当然的,但是仔细检查后我找不到保证,而且在复制和移动省略周围有些语言我不确定如何解释。我希望这里的一些更懂标准的人可以将我引向章节和经文。

Nat*_*ica 15

您要查找的内容在[intro.object] / 1中定义

[...]对象在其构造周期([class.cdtor])的整个生命周期内以及在其破坏周期([class.cdtor])占据一个存储区域。

这意味着该地址只要您可以访问就不能更改。