首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Clang静态分析器在使用protobuf的set_allocated_*时抱怨内存泄漏

Clang静态分析器在使用protobuf的set_allocated_*时抱怨内存泄漏
EN

Stack Overflow用户
提问于 2021-01-11 21:40:47
回答 1查看 259关注 0票数 2

使用下面的proto文件

代码语言:javascript
运行
复制
message Foo {
    // ...
}

message MyMessage {
    Foo foo = 1;
}

我使用生成的set_allocated_foo方法设置foo,该方法获取指针的所有权:

代码语言:javascript
运行
复制
MyMessage m;
m.set_allocated_foo(new Foo);

不过,当m离开作用域时,clang-tidy会给我以下警告:

代码语言:javascript
运行
复制
warning: Potential memory leak [clang-analyzer-cplusplus.NewDeleteLeaks]
}
^
note: Memory is allocated
    m.set_allocated_foo(new Foo);
                        ^

有什么方法可以避免这种情况吗?(不使用// NOLINT)

EN

回答 1

Stack Overflow用户

发布于 2021-05-21 01:24:53

一种方法是使用#ifdef __clang_analyzer__

代码语言:javascript
运行
复制
MyMessage m;
auto* f = new Foo;
m.set_allocated_foo(f);
#ifdef __clang_analyzer__
delete f
#endif

我不知道这是不是最好的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65667955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档