中止(倾倒核心)

时间:2013-05-29 03:13:50

标签: c++ core

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

1 个答案:

答案 0 :(得分:1)

我看不到您在rows中初始化变量colsmain的位置。

解决此问题后,x内的ycreate_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;
}

还有一个问题是,您的主要循环(应该分配数组的)正在将i0循环到i < cols。这应该是i < rows。在循环内部,您可以分配一个大小为[cols]的行,这是正确的。在我上面的剪辑中,如果仔细观察,我会进行修正。