Tag: leak sanitizer

如何在编译时启用Leak Sanitizer?

GCC和Clang编译器都支持LeakSanitizer ,它有助于在C程序中查找内存泄漏。 有时内存泄漏是不可避免的(因为它正在测试套件中进行测试)。 可以使用Leak Sanitizer界面注释这样的内存: #include void *p = create_new_object(); __lsan_ignore_object(p); 然而,这将在不支持LSan的编译器上中断。 在Address Sanitizer中,此构造可用于检测ASAN的可用性: /* __has_feature(address_sanitizer) is used later for Clang, this is for * compatibility with other compilers (such as GCC and MSVC) */ #ifndef __has_feature # define __has_feature(x) 0 #endif #if __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__) /* ASAN-aware code here. */ #endif 没有__has_feature(leak_sanitizer)来检测Clang中__SANITIZE_LEAKS__存在__SANITIZE_LEAKS__ ,GCC也不存在__SANITIZE_LEAKS__ 。 […]