小编jee*_*bee的帖子

Address Sanitizer 的两个问题

在一个业余爱好项目中,我使用地址清理程序 (-fsanitize=address) 和 g++-6 (Homebrew GCC 6.3.0_1) 6.3.0。

我收到一个我不明白的错误,它是:

==94266==AddressSanitizer CHECK failed: ../../../../libsanitizer/asan/asan_globals.cc:146 "((AddrIsAlignedByGranularity(g->size_with_redzone))) != (0)" (0x0, 0x0) #0 0x10b60cd3d in __asan::AsanCheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) (libasan.3.dylib+0x5dd3d) #1 0x10b612be3 in __sanitizer::CheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) (libasan.3.dylib+0x63be3)

玩了一段时间后,我注意到我在两个不同的类中使用正则表达式,如果删除其中任何一个,问题就会消失。我想了解为什么会这样以及我能做些什么。

因此,我的下一个尝试是构建问题的最小示例,我提出了以下建议:

// a.cpp

#include <iostream>
#include <regex>
#include <string>

using namespace std;

void a(const std::string &s)
{
    regex re_a("foo (.+)");
    smatch pieces;

    if (regex_match(s, pieces, re_a))
    {
        cout << "foo with …
Run Code Online (Sandbox Code Playgroud)

c++ address-sanitizer

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

标签 统计

address-sanitizer ×1

c++ ×1