c – 如何确定何时使用-fsanitize =内存?
发布时间:2020-12-16 07:15:40 所属栏目:百科 来源:网络整理
导读:我想在使用内存消毒器时清除FD_ZERO和FD_SET上的误报.清除它有点容易: #include sanitizer/msan_interface.h...__msan_unpoison(readfds,sizeof(readfds));__msan_unpoison(writefds,sizeof(writefds)); 但是,我不知道如何检测内存消毒剂何时使用.也就是说,
我想在使用内存消毒器时清除FD_ZERO和FD_SET上的误报.清除它有点容易:
#include <sanitizer/msan_interface.h> ... __msan_unpoison(&readfds,sizeof(readfds)); __msan_unpoison(&writefds,sizeof(writefds)); 但是,我不知道如何检测内存消毒剂何时使用.也就是说,检测命令行上是否指定了-fsanitize = memory.预处理器似乎没有帮助: $clang -dM -E -fsanitize=memory - </dev/null | egrep -i 'memory|sanitize|msan' $ 如何确定-fsanitize =内存何时正在使用? 解决方法
根据Konstantin Serebryany在
Memory Sanitizer mailing list上的说法,没有预处理器宏.应使用
__has_feature(memory_sanitizer):
#if defined(__has_feature) # if __has_feature(memory_sanitizer) # define MEMORY_SANITIZER 1 # endif #endif ... #ifdef MEMORY_SANITIZER # include <sanitizer/msan_interface.h> #endif ... #ifdef MEMORY_SANITIZER __msan_unpoison(&readfds,sizeof(writefds)); #endif ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读