当使用带有 gcc 的消毒剂时,可以提供一个异常/抑制列表来处理误报等。
抑制文件格式记录不全。
每个抑制的形式都是
name_of_check:path_or_name
Run Code Online (Sandbox Code Playgroud)
的有效值是name_of_check
什么?
gcc sanitizer thread-sanitizer address-sanitizer leak-sanitizer
最近在我们的代码中发现了一个错误,我们不小心将 a 转换std::array<char, N>
为std::string
. 有缺陷的代码不会在 c++20 模式下编译,但会在 c++23 模式下编译并 //mostly// 工作,除了一些带有 null 终止的边缘情况。我正在使用海湾合作委员会11.1。
#include <iostream>
#include <string>
#include <array>
int main()
{
std::array<char, 3> x = {'a', 'b', '\0'};
std::string s(x);
std::cout << "'" << s << "'" << " has length " << s.size() << std::endl;
//outputs "'ab' has length 3"
}
Run Code Online (Sandbox Code Playgroud)
我怀疑这可能与P1989R2 - std::basic_string_view 的范围构造函数有关,但我不知道该怎么做。
这是一个错误还是只是一个奇怪的行为还是什么?