gpt4 book ai didi

C++ 优化器删除具有副作用的对象

转载 作者:太空狗 更新时间:2023-10-29 20:38:47 24 4
gpt4 key购买 nike

目前这不是问题,但如果代码被移植或我们更改编译器,我会担心。

我有一个代码块

{ 
MyClass myObj;
// copy some other variables but never touch myObj
.
.
} // expect destructor to be called on myObj

其中 myObj 从未在 block 代码中使用,但构造函数有副作用,我依赖于 MyClass 的析构函数代码在 block 结束时执行。这在我当前的 arm 编译器上按预期工作,并启用了一些优化。

我的问题是,是否有任何我需要做的事情,比如声明一些 volatile 或设置一些公共(public)属性以防止优化器将 myObj 检测为未使用的变量等。

这不是 C++11 编译器。正如我所说,这目前不是问题,但我不想给其他人留下一个奇怪的 future 错误。

最佳答案

除了像 RVO (return value optimization) 这样明确定义的情况, 优化不允许改变程序的可观察行为。优化必须遵循所谓的 "as-if" rule .

关于C++ 优化器删除具有副作用的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30536272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com