由于变量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;
实际上会做这项工作。不再有警告。无论如何,感谢您的帮助。