c++ - 从矩阵中删除一行的分段错误
问题描述
我试图从矩阵中删除一行,但我只得到分段错误,我不知道我的代码有什么问题。
我的代码是:
void Matriz2D::DeleteRow(int delete_row)
{
int new_size = total_rows-1;
int **tmp = new int * [new_size];
for(int i = 0; i < new_size; i++){
tmp[i] = new int [size_cols];
}
for(int i = 0; i < total_rows; i++){
if(i != delete_row){
for(int j = 0; j < toal_cols; j++){
tmp[i][j] = data[i][j];
}
}
}
for(int i = 0; i < total_rows; i++){
delete [] data[i];
}
delete [] data;
data = tmp;
total_rows--;
}
解决方案
错误是您没有检查删除后的行的索引
void Matriz2D::DeleteRow(int delete_row)
{
int new_size = total_rows-1;
int **tmp = new int * [new_size];
for(int i = 0; i < new_size; i++){
tmp[i] = new int [size_cols];
}
for(int i = 0; i < total_rows; i++){
if(i != delete_row){
for(int j = 0; j < toal_cols; j++){
if (i < delete_row) {
tmp[i][j] = data[i][j];
} else {
tmp[i][j] = data[i-1][j];
}
}
}
}
for(int i = 0; i < total_rows; i++){
delete [] data[i];
}
delete [] data;
data = tmp;
total_rows--;
}
推荐阅读
- debugging - 创建 gdb 服务器的文档
- reactjs - 在 reactjs 的 map 中使用 api 动作
- python - 我正在绘制 RLC 电路的输出电压,但我不确定如何输入公式
- c# - Unity - 将对象添加到通用列表时类型不匹配
- python - 使用 Python 3.7 导入 pyobjc AppKit 时如何消除不需要的调试输出
- node.js - 如何将多页 Web 应用程序连接到 graphql?
- stripe-payments - stripe.createToken() 不是函数
- javascript - 如何从 responseText 属性中提取数值?
- flutter - 使用 Flutter 在 SQL 数据库中存储 PDF
- database - 为什么 MySQL 服务器有多个数据库引擎