【问题标题】:valgrind invalid write of size 4valgrind 大小为 4 的无效写入
【发布时间】:2016-07-23 00:37:32
【问题描述】:

我该如何解决这个问题,我的程序运行良好,但 valgrind 一直告诉我我在犯错误。

代码

错误

我不知道第 104 行和第 11 行出了什么问题

【问题讨论】:

  • “寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题中重现它所需的最短代码本身。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建 minimal reproducible example。"
  • 退出使用new[]并使用std::vector

标签: c++ arrays pointers valgrind dynamic-memory-allocation


【解决方案1】:

如果您将代码粘贴到(带有很好的缩进)而不是图片中会更容易。无论哪种方式,问题似乎是您在 for 循环之外递减 j。

for(int j=v[z]-1;j>=0;j--) {
    for (int g=max_el;g > 0;g--) {  // secondary problem.
        p[k][j] = g;
        j--;                // This is the problem.
    }
}

也许是这样:

for(int j=v[z]-1;j>=0;j--) {
    int g=max_el;
    p[k][j] = g;
    --g;
}

如果没有数据就很难判断,但看起来您正在递减 j 而没有考虑到 j 必须 >= 0 的限制。您当然可以尝试使用调试器进行调试,但我怀疑只是在循环时打印索引通过将照亮一些问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多