Visual Studio中ASAN未检测到内存泄漏问题求助
Address Sanitizer(ASAN)未检测到堆内存泄漏的原因及解决办法
MSVC版本的ASAN默认不启用内存泄漏检测功能,这就是你遇到问题的核心原因——并非ASAN无法检测这类泄漏,而是默认配置下没开启该检测项。
要让ASAN检测堆内存未释放的问题,需要手动启用泄漏检测:
方法1:通过环境变量配置
在运行程序前,设置环境变量:set ASAN_OPTIONS=detect_leaks=1之后再启动编译好的程序,ASAN就会在程序退出时扫描并报告未释放的堆内存。
方法2:在Visual Studio项目中配置
打开项目属性 -> 调试 -> 环境,添加如下内容:ASAN_OPTIONS=detect_leaks=1保存配置后,用调试器运行程序,就能看到ASAN输出的内存泄漏报告。
补充说明:Windows平台下MSVC默认关闭ASAN的泄漏检测,是因为系统本身提供了CRT内存泄漏检测工具(如_CrtDumpMemoryLeaks),但ASAN的泄漏检测功能在启用后,能提供更详细的调用栈信息,定位泄漏点更高效。
内容的提问来源于stack exchange,提问作者Vader
相关产品推荐
相关产品推荐

