写入动态二维数组时出现访问冲突...有时
该程序旨在生成动态数组,但是在给定某些维度时写入时会出现访问冲突错误。例如: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;
}
This program is meant to generate a dynamic array, however it gives an access violation error when writing when given certain dimensions. Eg: R = 6, C = 5 crashes, but then R = 5, C = 6 doesn't. In case your wondering, it isn't my homework to "fix" this broken program, this is the method we were taught in class. Also part of my assessment is to use this method, so vectors are out. Thanks in advance!
#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;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
应该是
should be
您的第一个循环为
0
和C-1
之间的d
数组的元素创建一个新的char
数组。第二个外循环从
0
到R-1
(包含)。所以最后访问的d[i]
没有被初始化。这通常会失败。要解决该问题,请将其用作您的第一个循环
Your first loop creates a new
char
array for elements of thed
array between0
andC-1
inclusively.The second outer loop goes from
0
toR-1
inclusively. So the lastd[i]
accessed is not initialized. This will typically fail.To solve the problem, use that as your first loop