如何解决Clang 静态分析器在使用 protobuf 的 set_allocated_*
使用以下proto文件
message Foo {
// ...
}
message MyMessage {
Foo foo = 1;
}
我使用生成的 foo
方法设置了 set_allocated_foo
,该方法取得了指针的所有权:
MyMessage m;
m.set_allocated_foo(new Foo);
clang-tidy 会在 m
离开范围时给我以下警告:
warning: Potential memory leak [clang-analyzer-cplusplus.NewDeleteLeaks]
}
^
note: Memory is allocated
m.set_allocated_foo(new Foo);
^
有什么办法可以避免吗? (不使用 // NOLINT
)
解决方法
一种方法是使用 #ifdef __clang_analyzer__
:
MyMessage m;
auto* f = new Foo;
m.set_allocated_foo(f);
#ifdef __clang_analyzer__
delete f
#endif
我不知道这是不是最好的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。