Visual Studio2019在编译时的警告C6385、C6386从..中读取的数据无效: 可读大小为..个字节,但可能读取了..个字节 以及 写入到..时缓冲区溢出: 可写大小为..个字节,但可能写入了..个字节
在Visual Studio2019中,在进行编译时出现了这样的警告:
1. C6385:从..中读取的数据无效: 可读大小为..个字节,但可能读取了..个字节;
2. C6386:从..中写入到..时缓冲区溢出: 可写大小为..个字节,但可能写入了..个字节
微软在默认情况下强制对C和C++代码强制使用SAL分析,除了以上两种警告外,还有其他的一些误报(false positive)。
解决方法
#pragma warning(push)是保存当前的编译器警告状态;
#pragma warning(pop)是恢复原先的警告状态。
例如:
#pragma warning(push) #pragma warning(disable:6385) #pragma warning(disable:6386) /*Source Code*/ #pragma warning(pop)
这样在编译Source Code部分的代码时,6385、6386警告将不会出现。
也可以不加#pragma warning(push)和#pragma warning(pop),这样#pragma warning(disable:6385)和#pragma warning(disable:6386)将在全局生效。