作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用以下原型(prototype)文件
message Foo {
// ...
}
message MyMessage {
Foo foo = 1;
}
我使用生成的 set_allocated_foo
方法设置 foo
,该方法获取指针的所有权:
MyMessage m;
m.set_allocated_foo(new Foo);
当 m
离开范围时,clang-tidy 会给我以下警告:
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
我不知道这是不是最好的方法。
关于c++ - Clang Static Analyzer 在使用 protobuf 的 set_allocated_* 时提示内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65667955/
我有这个小 protobuf 代码(简化,只包含必要的): message ParamsMessage { required int32 temperature = 1; } message
使用以下原型(prototype)文件 message Foo { // ... } message MyMessage { Foo foo = 1; } 我使用生成的 set_all
我是一名优秀的程序员,十分优秀!