2013-05-29 98 views
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; 
} 

回答

1

我沒有看到你初始化變量rows和中的cols

一旦你解決這個問題,xycreate_array被同樣的問題困擾。如果對象要用僞隨機值填充陣列,則不需要x,因爲i已經在您的二維數組(基於向量指針的表示被稱爲Iliffe vector,順便說一句)中前進。你只需要引入一些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到另一個問題:這j將在嵌套在現有循環內的循環得到加強i < cols。這應該是i < rows。在循環內部,您分配一個大小爲[cols]的行,這是正確的。如果你仔細觀察,我在上面縮小了,我做了修正。