./product -rows 4 -cols 4
我收到了这个错误:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Abort (core dumped)
这是我的代码..
#include <iostream>
#include <stdlib.h>
using namespace std;
int **create_array(int rows, int cols){
int x, y;
int **array = new int *[rows];
for(int i = 0; i < cols; i++){
array[i] = new int[cols];
}
array[x][y] = 1+rand()%100;
cout << array << endl;
return array;
}
int main(int argc, char *argv[]){
int rows, cols;
int **my_array = create_array(rows, cols);
return 0;
}
答案 0 :(得分:1)
我看不到您在rows
中初始化变量cols
和main
的位置。
解决此问题后,x
内的y
和create_array
会遇到同样的问题。如果对象是用伪随机值填充数组,则不需要x
,因为i
已经在2D数组中前进(其基于矢量指针的表示被称为顺便说一句Iliffe vector。您只需要引入一些j
,它会遍历数组的每一行。这个j
将嵌入一个嵌套在现有循环中的循环:
for(int i = 0; i < rows; i++){
array[i] = new int[cols]; // allocate row
for (int j = 0; i < cols; j++) // loop over it and fill it
array[i][j] = 1 + rand()%100;
}
还有一个问题是,您的主要循环(应该分配数组的行)正在将i
从0
循环到i < cols
。这应该是i < rows
。在循环内部,您可以分配一个大小为[cols]
的行,这是正确的。在我上面的剪辑中,如果仔细观察,我会进行修正。