小编Tho*_*s m的帖子

-fsanitize=address 重复内联字符串。这是预期行为还是编译器问题?

在我们的代码库中,我们期望字符串在编译的二进制文件中只存在一次。我观察到

-fsanitize=地址

可以在可执行文件中生成重复的字符串。这破坏了我们的代码。

以下 godbolt 示例演示了该问题https://godbolt.org/z/G5edcnr5e

我的问题是这是预期行为还是编译器问题?

c++ sanitizer

7
推荐指数
0
解决办法
117
查看次数

C ++编译时间结果与运行时间结果不同。错误或有效行为

我正在使用gcc 8.3.0并启用了-ffast-math的以下代码来进行x86交叉编译:

#include <cmath>

double diff_double(double in)
{
  auto tmp = 10 * std::log10(1. * 15e3);
  return tmp - (10 * std::log10(1. * in));
}

int main()
{
    return diff_double(15e3) == 0.;
}
Run Code Online (Sandbox Code Playgroud)

在执行时,我得到的返回值为0,因为针对“ tmp”的编译器优化结果与运行时结果不同。

这是有效的行为吗?

Godbold:https://godbolt.org/z/g2sev7

谢谢你的帮助

c++ gcc

5
推荐指数
0
解决办法
43
查看次数

标签 统计

c++ ×2

gcc ×1

sanitizer ×1