Log*_*orn 5 c++ optimization allocation volatile destruction
如果我有这个代码:
class A { ... };
class B { ... };
void dummy()
{
A a(...);
B b(...);
...
}
Run Code Online (Sandbox Code Playgroud)
我知道,变量a和b将在反向分配顺序(被破坏b将首先被破坏,则a); 但我可以肯定的是,优化器将永不掉的分配和建设a和b?或者我必须volatile用来执行它?
唯一的保证是任何可观察到的副作用(即,读取和写入volatile的建设的目标和要求,以I/O功能)a之前建设的任何可观察到的副作用会发生b,以及任何副作用a需要通过b意志在他们需要之前发生.
很难想象为什么你需要比这更严格的排序,但是在初始化任何部分之前使对象volatile确保a完全初始化b,尽管构造函数中的一些代码在a完成之前仍然可能发生.
| 归档时间: |
|
| 查看次数: |
2271 次 |
| 最近记录: |