此程序用于生成动态数组,但在给定某些维度时写入时会出现访问冲突错误。例如:R = 6,C = 5崩溃,但随后R = 5,C = 6则没有。如果你想知道,这不是我的“修复”这个破碎程序的功课,这就是我们在课堂上教授的方法。我评估的另一部分是使用这种方法,因此载体就出来了。提前谢谢!
#include <iostream>
using namespace std;
int main(){
const int R = 6;
const int C = 5;
char **d;
d = new char *[R];
for(int i=0; i<C; ++i){
d[i] = new char[C];
}
//initialise
for(int i=0; i<R; ++i){
for(int j=0; j<C; ++j){
d[i][j] = 'd';
cout<<d[i][j];
}
cout<<endl;
}
cout<<endl;
system("pause");
return 0;
}
答案 0 :(得分:4)
for(int i=0; i<C; ++i){
d[i] = new char[C];
}
应该是
for(int i=0; i<R; ++i){
d[i] = new char[C];
}
答案 1 :(得分:3)
您的第一个循环为char
和d
之间的0
数组元素创建了一个新的C-1
数组。
第二个外环包括0
到R-1
。因此,最后访问的d[i]
未初始化。这通常会失败。
要解决此问题,请将其用作第一个循环
for(int i=0; i<R; ++i){
d[i] = new char[C];
}