繁体   English   中英

Visual Studio C6385 警告 c++

[英]Visual Studio C6385 warning c++

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

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

另外,我的IDE的return line是绿色的,请问怎么解决?

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

我正在使用 Microsoft Visual Studio 16.6.2。

我不知道你为什么使用动态 memory 分配。 我建议避免所有评论的问题是使用向量

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

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

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; 实际上会完成这项工作。 没有警告了。 无论如何感谢您的帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM