gpt4 book ai didi

c - 试图抑制 clang 误报泄漏警告

转载 作者:太空狗 更新时间:2023-10-29 15:31:39 24 4
gpt4 key购买 nike

我在 Xcode 6.4 (6E35b) 下使用 clang 静态分析,并收到关于潜在内存泄漏的误报警告。我确实明确释放了相关内存,但释放发生在不同的编译单元中。这是我的 MWE:

file2.c:执行实际释放。

#include <stdlib.h>
void my_free(const void* p) {
free((void*) p);
}

file1.c:分配内存并通过外部函数显式释放它。

#include <stdlib.h>
void my_free(const void* p);

int main(int argc, char* argv[]) {
void* data = malloc(1);
if(data) my_free(data);
return 0; /* <-- "Potential leak of memory pointed to by 'data'" */
}

当我在调用它的同一个编译单元中定义 my_free() 时,不会生成警告,但当然我需要从一个大的调用 my_free()不同源文件的数量。

我已通读 FAQ and How to Deal with Common False Positives ,但它没有解决我的情况。我该怎么做才能让 clang 确信我确实在释放相关内存?

如果版本信息是相关的:

% clang --version
Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)

最佳答案

解决这个问题的一种方法是在头文件中添加特定于分析器的代码:

#ifdef __clang_analyzer__
#define my_free free
#endif

这将使静态分析器认为您正在使用经典的 free 功能并停止提示。

关于c - 试图抑制 clang 误报泄漏警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43940783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com