解除分配矩形 2D 数组会根据尺寸产生错误
Deallocating rectangular 2d arrays gives error depending on dimensions
>我创建了一个动态分配的二维数组,当我尝试删除它时,根据数组的尺寸出现错误。
如果行数多于列数,则没有问题:
#include <iostream>
#include <fstream>
using namespace std;
int main(){
int num_rows = 8;
int num_cols = 6;
char **charBoard = new char*[num_rows+1];
for(int i = 0; i<=num_cols; i++){
charBoard[i] = new char[num_cols+1];
}
for (int i = 0; i <=num_rows; i++){
delete[] charBoard[i];
}
//free the main array
delete[] charBoard;
return 0;
}
如果列数多于行数,则会出现错误:
#include <iostream>
#include <fstream>
using namespace std;
int main(){
int num_rows = 4;
int num_cols = 6;
char **charBoard = new char*[num_rows+1];
for(int i = 0; i<=num_cols; i++){
charBoard[i] = new char[num_cols+1];
}
for (int i = 0; i <=num_rows; i++){
delete[] charBoard[i];
}
//free the main array
delete[] charBoard;
return 0;
}
然后我得到这个错误: 已中止(核心已转储(
我不知道为什么。 我是否不正确地删除了某些内容?
填充数组时,变量名称出错:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
int num_rows = 4;
int num_cols = 6;
char **charBoard = new char*[num_rows+1];
for(int i = 0; i <= num_cols; i++) {
^^^^^^^^^
charBoard[i] = new char[num_cols+1];
}
for (int i = 0; i <= num_rows; i++) {
^^^^^^^^^
delete[] charBoard[i];
}
//free the main array
delete[] charBoard;
return 0;
}
以下是代码的更正版本:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
int num_rows = 4;
int num_cols = 6;
char **charBoard = new char*[num_rows+1];
for(int i = 0; i <= num_rows; i++) {
charBoard[i] = new char[num_cols+1];
}
for (int i = 0; i <= num_rows; i++) {
delete[] charBoard[i];
}
//free the main array
delete[] charBoard;
return 0;
}
相关文章:
- 为什么将指针重新分配给 1D 数组的 char 时显示错误,但 2D 数组工作正常?
- 解除分配矩形 2D 数组会根据尺寸产生错误
- 动态 2D 阵列.为什么分段错误?
- 分配给阵列时出现分段错误?黑客排名 2D 阵列 - DS.
- 当我在将文件读取到C字符串的2D数组后尝试对任何内容进行定制时,C++分段错误
- 2D 数组中的"Excess elements in scalar initializer"错误
- 索引 2D 向量时'Reference to type const..'编译错误
- 由于 2D 数组声明,C++ 14 中的运行时错误
- 与 fftw3 相比,错误的 2D CuFFT 逆变换
- 将 2D 数组插入 std::vector 时"cannot convert from 'const GLfloat [12]' to '_Objty'"错误消息
- 传递动态分配的 2D 字符数组会导致分段错误
- MPI_Scatterv/ Gatherv 使用带有"large" 2D 矩阵的C++会引发 MPI 错误
- 使用 2D arrray.分段错误 - C++
- 错误在删除动态分配的2D数组期间发生
- C++的新增功能:创建 2D 数组并具有正确的赋值运算符:分割错误
- 当我传递带有列大小的2D数组时,它会显示出一些错误
- 尝试将文本文件加载到动态分配的 2D 数组中时出现'Segmentation fault'错误
- C++从函数返回的 2D 数组,错误:以非零状态退出
- 从文本文件读取 2D 数组错误
- 用“ strcpy”在2D数组中删除(字符)的一行(字符)时是否存在任何错误