AddressSanitizer(ASan)是Clang/GCC提供的编译期插桩内存检测工具,可快速发现缓冲区溢出、use-after-free等错误,需编译链接均加-fsanitize=address、禁用高优化并加-g,运行时报错含详细堆栈与内存信息。
AddressSanitizer(ASan)是 Clang 和 GCC 提供的内存错误检测工具,能快速发现堆栈缓冲区溢出、use-after-free、double-free、内存泄漏(需额外开启)等常见问题。它不是运行时库,而是编译期插桩 + 运行时检测,开销约 2×,但远比 Valgrind 快。
关键是在编译和链接阶段都加上 -fsanitize=address,并建议禁用优化(或至少不用 -O2 及以上),否则可能漏报或误报:
clang++ -fsanitize=address -g -O1 main.cpp -o main
g++ -fsanitize=address -g -O1 main.cpp -o main
程序运行后一旦触发非法内存访问,ASan 会立即终止进程,并打印带堆栈、内存布局、访问地址、对象起源等信息的详细报告:
ERROR: AddressSanitizer: heap-buffer-overflow on address 0x60200000001c
ERROR: AddressSanitizer: use-after-free on address 0x602000000030
allocated by thread T0
here:)、访问位置、以及附近内存快照ASAN_OPTIONS=detect_leaks=1 ./main
通过环境变量可微调 ASan 行为,适合不同场景:
ASAN_OPTIONS=abort_on_error=1:出错直接 abort,方便用 gdb 调试(gdb ./main → run → 崩溃后 bt)ASAN_OPTIONS=disable_coredump=0:允许生成 core dump,便于事后分析ASAN_OPTIONS=allocator_may_return_null=1:让 new 失败时返回 nullptr 而非抛异常(兼容旧代码)__asan_poison_memory_region() / __asan_unpoison_memory_region() 手动标记在 CMakeLists.txt 中添加条件编译支持,避免每次手动改命令:
cmake -DCMAKE_CXX_FLAGS="-fsanitize=address -g -O1" -DCMAKE_EXE_LINKER_FLAGS="-fsanitize=address" ..
if(CMAKE_BUILD_TYPE STREQUAL "Debug" AND "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang|GNU")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -g -O1")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")
endif()
add_compile_options 不影响链接器标志,必须单独设 CMAKE_EXE_LINKER_FLAGS
# 工具
# 栈
# ai
# c++
# 环境变量
# 常见问题
# overflow
# red
# Error
# double
# 堆
# Thread
# 对象
# 行号
# 报错
# 是在
# 自定义
# 能把
# 而非
# 如需
# 远比
# 中会
# 事后
相关文章:
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
如何通过多用户协作模板快速搭建高效企业网站?
已有域名能否直接搭建网站?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
如何自定义建站之星网站的导航菜单样式?
如何快速登录WAP自助建站平台?
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
c++ stringstream用法详解_c++字符串与数字转换利器
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
济南企业网站制作公司,济南社保单位网上缴费步骤?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
如何确保FTP站点访问权限与数据传输安全?
做企业网站制作流程,企业网站制作基本流程有哪些?
如何选择高效便捷的WAP商城建站系统?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
,网页ppt怎么弄成自己的ppt?
如何在阿里云完成域名注册与建站?
如何快速搭建高效简练网站?
PHP 500报错的快速解决方法
linux top下的 minerd 木马清除方法
建站之星代理如何获取技术支持?
javascript基本数据类型及类型检测常用方法小结
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
如何零基础开发自助建站系统?完整教程解析
建站之星如何快速解决建站难题?
详解jQuery中基本的动画方法
北京制作网站的公司,北京铁路集团官方网站?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
名字制作网站免费,所有小说网站的名字?
如何配置WinSCP新建站点的密钥验证步骤?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
沈阳制作网站公司排名,沈阳装饰协会官方网站?
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
盘锦网站制作公司,盘锦大洼有多少5G网站?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
深圳网站制作培训,深圳哪些招聘网站比较好?
如何配置FTP站点权限与安全设置?
上海网站制作开发公司,上海买房比较好的网站有哪些?
专业商城网站制作公司有哪些,pi商城官网是哪个?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
如何高效完成自助建站业务培训?
如何在七牛云存储上搭建网站并设置自定义域名?
如何零成本快速生成个人自助网站?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
MySQL查询结果复制到新表的方法(更新、插入)
淘宝制作网站有哪些,淘宝网官网主页?
如何在Windows 2008云服务器安全搭建网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。