c++ free():无效的下一个大小(快速)
C++ free(): invalid next size (fast)
我看过类似的问题(比如这个、这个和这个),但我仍然不能弄清楚这个。在一些测试用例中,我得到了错误并且无法理解它。我得到的错误是:
free(): invalid next size (fast)
我的代码使用Robot Coin Collection算法。我的实现如下:
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];
}
在发生错误的测试用例中,可以使用stderr输出结果,但由于错误,将无法返回任何内容。这部分对我来说不太有意义,因为它在2D向量中的位置是相同的。
vector<vector<int>> result(grid.size(), vector<int>(grid.size(), 0));
创建正方形网格,而不是矩形网格。您可能想使用:
vector<vector<int>> result(grid.size(), vector<int>(grid[0].size(), 0));
^^^^
我建议使用:
int rows = grid.size();
int cols = grid[0].size();
vector<vector<int>> result(rows, vector<int>(cols, 0));
相关文章:
- 重新定位图像时如何前进到下一个内存块
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- 用于在 C++ 中使用 while 循环查找下一个素数的简单函数
- C++: free(): 无效的下一个大小(快速)
- free():多次调用后下一个大小(快速)无效
- 快速从文件中读取下一个字符串,而无需移动文件的位置
- 将矢量<int>推入矢量<矢量<int>>时,SIGABRT - free():下一个大小无效(快速)
- free(): 无效的下一个大小 (快速): 0x0000000000f45160 ***.
- C 运行时错误:Free():下一个大小无效(快速)
- 释放内存失败:free():下一个大小无效(快速):
- 有人能向我解释一下我的代码的哪一部分导致***检测到glibc***吗/a2:free():无效的下一个大小(快速)
- 内存错误: free(): 下一个大小无效 (快速)
- glibc 检测到 *** ./burcu.exe: free(): 无效的下一个大小 (快速): 0x00000000
- C++错误:Free()下一个大小无效(快速)
- C++错误消息free():下一个大小无效(快速)
- c++ free():无效的下一个大小(快速)
- 从Qt快速控件加载下一个屏幕/应用程序窗口
- free()下一个大小无效(快速)-C++内存错误
- Linux中的c++运行时错误::glibc检测到free():无效的下一个大小(快速):堆栈具有void ptr元素
- 如何找到错误: *** './a.out' 中的错误: free(): 无效的下一个大小 (快速): 0x09767150 ***