Visual Studio中的警告C6385
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual Studio中的警告C6385相关的知识,希望对你有一定的参考价值。
我似乎从Visual Studio 2019(16.5预览版以及16.4和更早版本)代码分析工具中收到错误警告消息。这是一个错误,还是我真的只是缺少一些东西?
生成的警告(准确地是:)>
警告C6385:从'prodlist'读取无效数据:可读大小为'(size_t)* 32 + 8'字节,但可能读取'64'字节。
这里是生成警告的代码(尽可能少)
#include <cstdint> #include <string> #include <iostream> struct Product std::string price_profile; ; int getNumRows() return 5; Product *getProductsFromDB( int &numelements ) numelements = 0; const int num_rows = getNumRows(); if ( num_rows == 0 ) numelements = 0; return nullptr; Product *prodlist = new Product[num_rows]; for ( int i = 0; i < num_rows; ++i ) prodlist[i].price_profile = "test"; // Warning on this line numelements = num_rows; return prodlist; int main() int num_rows; Product *prodlist = getProductsFromDB( num_rows ); for ( int i = 0; i < num_rows; ++i ) std::cout << prodlist[i].price_profile; getchar();
如果将
price_profile
更改为int
(及其对应的值),或者如果将num_rows
更改为常数(例如5
,则警告消失。
我似乎从Visual Studio的代码分析工具收到错误的警告消息。这是一个错误,还是我真的只是缺少一些东西?生成的警告(准确地)是:警告C6385:...
[在Visual Studio 2019中,Microsoft似乎默认情况下对C和C ++代码强制执行SAL分析规则,尽管仍然有很多误报类似您的案例。
以上是关于Visual Studio中的警告C6385的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 中的“将所有警告视为错误,除了...”
Visual Studio 2019 中的 GDAL 库头文件错误和警告
解决 Visual Studio 2005/2008 中的“Validation (): Element ‘xxxx’ is not supported”警告
Visual Studio Community 2019 中的 C++ 代码分析产生警告 C26486 和 C26414