之前做服务器时,一般是linux下的C++, 
C++容易出很多内存问题:内存泄漏、内存越界、野指针 空指针之类的问题。 
linux下 运行时检测工具,有 valgrind,正常编译debug版,然后附加运行就行了, 就是大程序会有比较卡; 也有 AddressSanitizer(ASan) , 编译后直接运行检测。

最近接触一个windows的C++项目, 之前一直苦于没好用的内存检测工具。 最近再查资料发现,VS2019 新的版本,已经带有 AddressSanitizer(ASan) , 虽然还是在测试阶段。
尝试用了一下,还可以。

1、需要安装一下这个工具:

2、项目的属性里, 开启“启用地址擦除系统”:

如果编译报错,根据错误信息调整一下。(比如之前 Debug 不支持 /ZI ,  不过我升级V16.11.xx之后 就没提醒,但是 遇到内存越界不会报错了,所以一定要改成/Zi

3、然后运行exe就行了,如果代码有内存问题,会报错。   不过直接运行exe,若检测到读越界、写越界, 程序都会闪退,常看不到信息。 
处理方案:
一个就是 vs直接调试运行,
一个就是 环境变量里加上 ASAN_OPTIONS  halt_on_error=0:log_path=asan.log   
或者 运行的命令行里执行:set ASAN_OPTIONS=halt_on_error=0:log_path=asan.log

出现问题时,会在 当前exe目录下生成 asan.log.xxxx  (文件名自己定的,后面的数字应该是进程号)

遇到的问题:
(1) 这版项目,Debug 版本引用的几个自己编的.DLL 会出Assert  
Debug Assertion Failed: _CrtIsValidHeapPointer(block)
自己的解决办法是,把对应dll 也开启 asan 重新编一下。。。
(2) halt_on_error=0 参数好像作用不大, 程序还是一检测就闪退,我再研究研究。

其他可以找网上的资料, 看看报错了之后如何定位问题
VS2019中使用AddressSanitizer检测内存问题 - 简书

比如它能比较好的定位到 野指针问题。 
某某行代码 访问xxx内存 有问题
这个内存在哪行代码释放掉了
这个内存是在那行代码分配的之类的。

再好好看看自己的代码,大部分能定位出问题来。   (不过还是有些报错很难定位 - -!)

官方一些资料:
 AddressSanitizer 已知问题 | Microsoft Docs

vs2019 C++自带了内存问题检测工具:AddressSanitizer(ASan)相关推荐

  1. 内存错误检测工具AddressSanitizer原理

    原论文:AddressSanitizer: A Fast Address Sanity Checker 谷歌官方文档:AddressSanitizerAlgorithm 参考博客:Introducti ...

  2. iOS开发之内存泄漏检测工具-Leaks

    引言 我们在实际开发过程中,经常会不小心造成循环引用问题,从而造成内存泄漏问题,那么我们该如何检测我们工程那个位置存在内存泄漏问题呢?这就需要用到Xcode自带的内存泄漏检测工具-Leaks. 内存泄 ...

  3. win10系统自带的计算机无法使用吗,Win10如何使用系统自带的硬件设备检测工具?...

    Win10如何使用系统自带的硬件设备检测工具?在Win10操作系统中,自带有硬件设备检测工具,当我们遇到电脑故障时,可以使用这些检测工具来处理故障.下面小编就来教大家使用电脑自带的硬件设备检测工具! ...

  4. Android内存泄漏检测工具使用手册

    Android内存泄漏检测工具使用手册 前言 LeakCanary 在Android中接入LeakCanary LeakCanary内存泄漏分析 内存泄漏上报到服务端 Shark Shark分析当前应 ...

  5. 计算机自带的配置检测,Windows10系统自带电脑硬件设备检测工具的使用步骤

    windows10系统在使用过程中,有时候会遇到一些系统故障,那么我们可以使用自带的电脑硬件设备检测工具来进行处理,但是很多用户不知道Windows10系统自带电脑硬件设备检测工具如何使用,本文就给大 ...

  6. 计算机自带的配置检测,Win10如何使用系统自带的硬件设备检测工具?

    Win10如何使用系统自带的硬件设备检测工具?在Win10操作系统中,自带有硬件设备检测工具,当我们遇到电脑故障时,可以使用这些检测工具来处理故障.下面小编就来教大家使用电脑自带的硬件设备检测工具! ...

  7. Linux中的常用内存问题检测工具

    原文地址:http://blog.csdn.net/jinzhuojun/article/details/46659155 C/C++等底层语言在提供强大功能及性能的同时,其灵活的内存访问也带来了各种 ...

  8. 几种内存泄露检测工具的比较

    概述 内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况,在大型的.复杂的应用程序中,内存泄漏是常见的问题.当以前分配的一片内存不再需要使用或无法访问时,但是却 ...

  9. 内存问题检测工具的介绍

    C/C++等底层语言在提供强大功能及性能的同时,其灵活的内存访问也带来了各种纠结的问题.但是,在这样灵活操作的后面,还隐藏着很危险的操作,那就是关于内存的问题.一看到内存的问题,大部分的初学者就开始傻 ...

最新文章

  1. List Tuple Dictionary 区别
  2. css中background-image背景图片路径设置
  3. 用_beginthreadex不用 CreateThread
  4. 「Python」pycharm多项目虚拟环境切换
  5. oracle允许空行,oracle用户权限的一些基本操作
  6. linux文件存储、inode、硬链接、软链接
  7. Android 功耗( 21 )---MTK 低功耗1
  8. Java基础学习——安装JDK
  9. PyTorch 深度学习:32分钟快速入门——DenseNet
  10. java的多态代码例子_java 多态实例代码
  11. ES6解析彩票项目学习记录(二)
  12. 看了看几个数据库厂商的发展历史
  13. 程序入口地址的直接定制表【 (1) 清屏(2) 设置前景色 (3) 设置背景色 (4) 向上滚动一行】...
  14. FL Studio 12是什么软件?Mac音乐制作软件推荐FL Studio 12 for Mac!
  15. 最新JAVA+Python+大数据资料分享
  16. 如何解决python 画图时 it could not find or load the Qt platform plugin “windows“ in “”的问题
  17. Java Method 类
  18. Django新手十个开发指导
  19. python中pymysql的小坑
  20. 解决在IDEA中进行结巴分词产生Exception in thread “main“ ExceptionInInitializerError at ()错误

热门文章

  1. 华为p40pro NFC模拟加密小区卡详细教程
  2. 论面向服务的架构及其应用
  3. 100本优秀外文书籍的中文版介绍
  4. 会声会影2021软件如何快速找到最新版下载?
  5. 多探头球面近场天线测试效率提升方法
  6. jsp823科研项目申报管理网站cc94程序mysql+java
  7. CSS 设置p标签首字母格式
  8. 【知识兔】Excel小技巧系列之图片压缩
  9. python练习之excel表格管理
  10. B站-HCIA/IP-学习笔记-二层-理论-STP/RSTP/MSTP