C ++中动态二维数组的访问冲突
access violation with dynamic 2-dimension array in C++
感谢您的帮助
我想将动态二维维度设置为 char
int n;
char** stars;
int main() {
cin >> n;
for (int i = 0;i < n;i++) {
stars = new char* [n];
stars[i] = new char[n];
for (int j = 0;j < n;j++) {
stars[i][j] = '*';
}
}
for (int i = 0;i < n;i++) {
for (int j = 0;j < n;j++)
cout << stars[i][j]; //this is where access violation is occured
cout << endl;
}
return 0;
}
而且我还想知道,如果我将 * 放在这个数组上,那么每次插入时都会在内存中生成包含“*”的新字符数据(可能是此代码中的堆栈)?
stars = new char* [n];
在循环中定位错误,所以你为每个字符串重新分配它,在新分配的矩阵中只分配了一个字符串。
stars = new char* [n];
你为什么要在 for 循环中声明它?
它将为每个循环一次又一次地分配。
在外面声明就可以了
感谢您的帮助
我想将动态二维维度设置为 char
int n;
char** stars;
int main() {
cin >> n;
for (int i = 0;i < n;i++) {
stars = new char* [n];
stars[i] = new char[n];
for (int j = 0;j < n;j++) {
stars[i][j] = '*';
}
}
for (int i = 0;i < n;i++) {
for (int j = 0;j < n;j++)
cout << stars[i][j]; //this is where access violation is occured
cout << endl;
}
return 0;
}
而且我还想知道,如果我将 * 放在这个数组上,那么每次插入时都会在内存中生成包含“*”的新字符数据(可能是此代码中的堆栈)?
stars = new char* [n];
在循环中定位错误,所以你为每个字符串重新分配它,在新分配的矩阵中只分配了一个字符串。
stars = new char* [n];
你为什么要在 for 循环中声明它?
它将为每个循环一次又一次地分配。
在外面声明就可以了