C++ valgrind大小为4的写入无效

C++ valgrind大小为4的写入无效,c++,arrays,pointers,valgrind,dynamic-memory-allocation,C++,Arrays,Pointers,Valgrind,Dynamic Memory Allocation,我该如何解决这个问题,我的程序做得很好,但valgrind一直告诉我我在犯错误 代码 错误 我无法找出第104行和第11行中的错误所在,如果您粘贴代码(使用漂亮的缩进)而不是图片,那么会更容易。不管是哪种方式,问题似乎是除了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;

我该如何解决这个问题,我的程序做得很好,但valgrind一直告诉我我在犯错误

代码

错误


我无法找出第104行和第11行中的错误所在,如果您粘贴代码(使用漂亮的缩进)而不是图片,那么会更容易。不管是哪种方式,问题似乎是除了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。您当然可以尝试使用调试器对此进行调试,但我怀疑,在循环过程中简单地打印索引将有助于解决某些问题

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