为什么LSan(带有gcc)不';找不到mmap分配的内存泄漏?

为什么LSan(带有gcc)不';找不到mmap分配的内存泄漏?,gcc,clang,leak-sanitizer,Gcc,Clang,Leak Sanitizer,我用下面的代码测试了它 //main.c #包括 #包括 #包括 int main(){ int*ptr1=(int*)malloc(1); int*ptr2=(int*)mmap(0,4096*10,保护读取,保护写入,映射匿名,映射共享,-1,0); } 我像下面这样构建并运行它 结果显示,LSan只发现了一个malloc泄漏 是否有任何选项可以强制它使用mmap或LSan查找泄漏,而LSan正是为了这样做而设计的 $gcc-fsanize=address-O0 main.cpp $ASA

我用下面的代码测试了它

//main.c
#包括
#包括
#包括
int main(){
int*ptr1=(int*)malloc(1);
int*ptr2=(int*)mmap(0,4096*10,保护读取,保护写入,映射匿名,映射共享,-1,0);
}
我像下面这样构建并运行它
结果显示,LSan只发现了一个malloc泄漏
是否有任何选项可以强制它使用mmap或LSan查找泄漏,而LSan正是为了这样做而设计的

$gcc-fsanize=address-O0 main.cpp
$ASAN\u选项=检测\u泄漏=1。/a.out
=================================================================
==14654==错误:泄漏消毒剂:检测到内存泄漏
从以下位置分配的1个对象中的1个字节直接泄漏:
#0 0x7fc1054f0b50在截取程序malloc中(/usr/lib/x86\u 64-linux-gnu/libasan.so.4+0xdeb50)
#1个0x55c984e2283b主电源(/home/work/a.out+0x83b)
#2个0x7fc105042b96,位于libc_start_main(/lib/x86_64-linux-gnu/libc.so.6+0x21b96)中
摘要:AddressSanitizer:1个分配中泄漏了1个字节。

我从LSan github那里得到了答案
所以,如果有人想知道LSan为什么有这个政策,请参考下面的链接