C++ C++;free():下一个大小无效(快速)

C++ C++;free():下一个大小无效(快速),c++,C++,我已经研究过类似的问题(例如,和),但我仍然无法解决这个问题。在一些测试用例中,我得到了错误,但无法理解它。我得到的错误是: free(): invalid next size (fast) 我的代码使用机器人硬币收集算法。我的实施情况如下: int collectTens( vector< vector<int> > grid ) { vector<vector<int>> result(grid.size(), vector<int&

我已经研究过类似的问题(例如,和),但我仍然无法解决这个问题。在一些测试用例中,我得到了错误,但无法理解它。我得到的错误是:

free(): invalid next size (fast)
我的代码使用机器人硬币收集算法。我的实施情况如下:

int collectTens( vector< vector<int> > grid ) {

vector<vector<int>> result(grid.size(), vector<int>(grid.size(), 0));
int rows = grid.size();
int cols = grid[0].size();

for (int i = 0; i < rows; i++) {
    for (int j = 0; j < cols; j++) {
        if (grid[i][j] % 10 != 0) {
            grid[i][j] = 0;
        }
    }
}

result[0][0] = grid[0][0];

for (int k = 1; k < cols; k++) {
    result[0][k] = result[0][k - 1] + grid[0][k];
}

for (int i = 1; i < rows; i++) {
    result[i][0] = result[i - 1][0] + grid[i][0];
    for (int j = 1; j < cols; j++) {
        result[i][j] = max(result[i - 1][j], result[i][j - 1]) + grid[i][j];
    }
}

cerr << result[rows - 1][cols - 1] << endl;

return result[rows - 1][cols - 1];
}
int集合(向量grid){
向量结果(grid.size(),向量(grid.size(),0));
int rows=grid.size();
int cols=grid[0].size();
对于(int i=0;i
vector<vector<int>> result(grid.size(), vector<int>(grid.size(), 0));
向量结果(grid.size(),向量(grid.size(),0));
创建方形网格,而不是矩形网格。您可能打算使用:

vector<vector<int>> result(grid.size(), vector<int>(grid[0].size(), 0));
                                                        ^^^^
向量结果(grid.size(),向量(grid[0].size(),0)); ^^^^ 我建议使用:

int rows = grid.size();
int cols = grid[0].size();
vector<vector<int>> result(rows, vector<int>(cols, 0));
int rows=grid.size();
int cols=grid[0].size();
向量结果(行,向量(cols,0));
线路

vector<vector<int>> result(grid.size(), vector<int>(grid.size(), 0));
向量结果(grid.size(),向量(grid.size(),0)); 创建方形网格,而不是矩形网格。您可能打算使用:

vector<vector<int>> result(grid.size(), vector<int>(grid[0].size(), 0));
                                                        ^^^^
向量结果(grid.size(),向量(grid[0].size(),0)); ^^^^ 我建议使用:

int rows = grid.size();
int cols = grid[0].size();
vector<vector<int>> result(rows, vector<int>(cols, 0));
int rows=grid.size();
int cols=grid[0].size();
向量结果(行,向量(cols,0));

使用valgrind之类的内存调试器或其他平台上使用的调试器。(如果您需要我们的帮助,您必须为我们提供足够的代码来重现错误。可能传递给
collectTens
的向量大小不尽相同。这会让事情变得一团糟。)很好的建议。我尝试使用valgrind,但在运行时遇到问题。不过,弄清楚如何使用此类工具在将来肯定会有所帮助。使用valgrind之类的内存调试器或其他平台上使用的调试器。(如果您希望我们提供帮助,您必须为我们提供足够的代码来重现错误。可能传递到
collectTens
的向量中的向量大小不尽相同。这会让事情变得一团糟。)很好的建议。我尝试使用valgrind,但在运行时遇到问题。不过,弄清楚如何使用这些工具在将来肯定会有所帮助。你是对的,这就是我忽略的。我一直认为错误在我的算法中。谢谢!你是对的,这就是我忽略的。我一直认为错误在我的算法中。谢谢