涉及优化器的局部变量构造和破坏
如果我有这个代码:
class A { ... };
class B { ... };
void dummy()
{
A a(...);
B b(...);
...
}
我知道变量a
和b
将以反向分配顺序销毁(b
将首先销毁,然后a
);但我可以确定优化器永远不会交换a
和b
的分配和构造吗?或者我必须使用volatile
来执行它?
没有找到相关结果
已邀请:
3 个回复
味芯憨
的任何可观察的副作用(即对
对象的读写和对I / O函数的调用)都将在构造
的任何可观察的副作用之前发生,并且任何副作用
要求的
将在需要之前发生。 很难想象为什么你需要比这更严格的顺序,但是使对象
将确保在初始化
的任何部分之前完全初始化although1ѭ,尽管构造函数中的某些代码仍然可以在
完成之前发生。
闪票仇门韧
的构造和分配将在
之前。只要您将语句与
分开,无论优化如何,它们都将按顺序执行。
不会改变它,它的作用是阻止编译器在访问之间缓存值。
诉嘎归亮