0
./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;
}
4

1 回答 1

1

我没有看到你在哪里初始化变量rowscolsmain.

一旦你解决了这个问题,x里面y就会遇到create_array同样的问题。如果对象是用伪随机值填充数组,则不需要,x因为i已经在 2D 数组中前进(顺便说一下,其基于指针向量的表示称为Iliffe 向量)。您只需要介绍一些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;
}

还有一个问题是你的主循环,应该是分配数组的,是i0to循环的i < cols。这应该是i < rows。在循环内部,您分配了一个大小为 的行[cols],这是正确的。如果你仔细看的话,在我上面的截图中,我做了更正。

于 2013-05-29T03:18:15.583 回答