BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #96925同步于 2017/11/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

【问题】求大佬解释一下- -!!

iAzure
2017/11/26镜像同步12 回复
写了一个矩阵的加法,因为想避免分配的内存不够就用了new来分配内存,但是编译后运行到一半,编译器总是提醒我对于矩阵C的“读取访问权限冲突”有没有大佬可以解释一下。感谢! #include "stdafx.h" #include <iostream> using namespace std; //加法 int mat_add(int **A, int **B,int **C,int row,int col) { int i = 0, j = 0; for (i; i < row; i++) { for (j; j < col; j++) { C[i][j] = A[i][j] + B[i][j]; } } for (i; i < row; i++) { for (j; j < col; j++) { cout << "\t" << C[i][j]; } cout << endl; } return 0; } int main() { int row, col; cout << "请输入行数:"<<endl; cin >> row; cout << "请输入列数:" << endl; cin >> col; //为矩阵A申请空间 //定义行 int **A = new int *[row]; //定义列 for (int i = 0; i < row; i++) { A[i] = new int[col]; } //为矩阵B申请空间 //定义行 int **B = new int *[row]; //定义列 for (int i = 0; i < row; i++) { B[i] = new int[col]; } //为矩阵C申请空间 //定义行 int **C = new int *[row]; //定义列 for (int i = 0; i < row; i++) { C[i] = new int[col]; } //输入A; cout << "请输入矩阵A" << endl; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { cin >> A[i][j]; } } //输入B; cout << "请输入矩阵B" << endl; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { cin >> B[i][j]; } } //调用函数!!!!! mat_add(A, B, C,row, col); //释放ABC空间; for (int i=0; i < row; i++) { delete A[i]; A[i] = NULL; } delete[row]A; A = NULL; for (int i = 0; i < row; i++) { delete B[i]; B[i] = NULL; } delete[row]B; B = NULL; for (int i = 0; i < row; i++) { delete C[i]; C = NULL; } delete[row]C; C = NULL; system("pause"); return 0; }
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
intmain机器人#1 · 2017/11/26
line 102: C = NULL; // what the hell?!! delete[row]C: 这种写法真没见过,可能我见识少... A[i], B[i], C[i]也都应该用delete[]啊...
chenxiansf机器人#2 · 2017/11/26
哈哈哈,语法哪学的
iShu机器人#3 · 2017/11/26
通常分配矩阵内存的时候都是分配成一维的,使用的时候根据矩阵维数来索引,这样分配的好处是内存连续
iAzure机器人#4 · 2017/11/26
搜的度娘[ema8]看的c++primer plus只介绍了new的一维用法[ema1][ema1] 【 在 intmain 的大作中提到: 】 : line 102: C = NULL; // what the hell?!! : : delete[row]C: 这种写法真没见过,可能我见识少...
iAzure机器人#5 · 2017/11/26
[ema1]搜的度娘 【 在 chenxiansf 的大作中提到: 】 : 哈哈哈,语法哪学的
iAzure机器人#6 · 2017/11/26
可以举个栗子吗~谢谢 【 在 iShu 的大作中提到: 】 : 通常分配矩阵内存的时候都是分配成一维的,使用的时候根据矩阵维数来索引,这样分配的好处是内存连续
Nroskill机器人#7 · 2017/11/26
他的意思应该是 对于 ```int matrix[R][C];``` 可以定义为 ```int matrix[R * C];``` 即 ```matrix[i][j] == matrix[i * C + j]``` 按照楼主的写法,就是用 ```int* matrix;``` 就ok了 不过为什么不用 ```vector<int> matrix;``` 呢?这种写法并没有用到cpp的任何优势,跟c没有区别 【 在 iAzure 的大作中提到: 】 : 可以举个栗子吗~谢谢
iAzure机器人#8 · 2017/11/27
之前入门先看了c的教程,对于c++优势也不太清楚……可以指点一下么 【 在 Nroskill 的大作中提到: 】 : [md] : 他的意思应该是 :
Nroskill机器人#9 · 2017/11/27
引用 class template STL 【 在 iAzure 的大作中提到: 】 : 之前入门先看了c的教程,对于c++优势也不太清楚……可以指点一下么 : :