Visual Studio2019在编译时的警告C6385、C6386从..中读取的数据无效: 可读大小为..个字节,但可能读取了..个字节 以及 写入到..时缓冲区溢出: 可写大小为..个字节,但可能写入了..个字节

时间:2020-10-16
本文章向大家介绍Visual Studio2019在编译时的警告C6385、C6386从..中读取的数据无效: 可读大小为..个字节,但可能读取了..个字节 以及 写入到..时缓冲区溢出: 可写大小为..个字节,但可能写入了..个字节,主要包括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)将在全局生效。

$flag 上一页 下一页