Visual Studio C6385 warning c++



由于变量a,我收到以下警告:

C6385:从"z"读取无效数据:可读大小为"a*4"字节,但可以读取"12"字节

此外,return行在我的 IDE 中标记为绿色。我应该如何解决这个问题?

int function(int a)
{
int* z = new int[a];
return z[2];
}

我正在使用Microsoft Visual Studio 16.6.2。

我不知道你为什么使用动态内存分配。我避免所有注释问题的建议是使用向量

int function(int a)
{
std::vector<int> z(std::max(3, a));
return z[2];
}

它将初始化元素,清理内存并保证大小。另一种方法是在元素不存在时抛出

int function(int a)
{
std::vector<int> z(a);
return z.at(2);
}

int function(int a)
{
if (a < 3) throw;
std::vector<int> z(a);
return z[2];
}

我想通了:添加if (a < 3) a = 3;实际上会做这项工作。不再有警告。无论如何,感谢您的帮助。

最新更新