c++ - 如何解决地址问题

标签 c++ pascals-triangle

<分区>

我正在尝试解决 Leetcode 上的帕斯卡三角问题。运行代码时出现此错误。

AddressSanitizer: heap-buffer-overflow on address 0x602000000014 at pc 0x000000407875 bp 0x7ffe13bd9300 WRITE of size 4 at 0x602000000014 thread T0.

我该如何解决?

class Solution {
public:
    vector<vector<int>> generate(int numRows) {


        vector<vector<int>> tri(numRows);

        vector<int> row;
        row.push_back(1);
        tri.push_back(row);
        row.clear();

        for (int i = 1; i < numRows; i++) {
            row[0]=1;
            row[i]=1;
            for (int j = 1; j < i; j++) {

                    row[j] = tri[i-1][j] + tri[i-1][j-1]; 

            }
            tri[i] = row;
            row.clear();
        }
        return tri;

    }
};

最佳答案

当您调用 row.clear() 时,会删除该行并将长度设置为 0。因此,当您尝试访问 row[0] 时, row[i] 等,您正在访问不应该接触的内存。

关于c++ - 如何解决地址问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57421851/

相关文章:

c++ - 使用 for 循环读取和写入同一个文本文件

java - 在java中打印2D int数组的空格而不是零

c - 尝试打印帕斯卡三角形时,第 13 次迭代打印错误答案

algorithm - 如何有效地计算帕斯卡三角形中的一行?

c++ - 在没有库的情况下用 C 解析 XML。

C++ 错误 : Sleep was not declared in this scope

c++ - 是否可以在 X86 处理器上自动加载和存储?

c++ - size_t 是否仅在 C++ 标准或 C 标准中?

java - 尝试构建帕斯卡三角形时错误的多维数组初始化(JAVA)

java - 为什么我的帕斯卡三角代码不起作用?