2013-05-29 2 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

내가 볼 수 없습니다 rowscolsmain입니다.

수정하면 xy 안에 create_array 같은 문제가 발생합니다. 객체가 의사 무작위 값으로 배열을 채울 경우 i이 이미 벡터 배열을 기반으로하는 벡터 배열을 통해 행진하므로 x이 필요하지 않습니다. 배열의 각 행을 통해 행진하는 j을 소개하면됩니다. 행 배열의을 할당해야 전공 루프,에 0에서 i 반복된다는 점에서 또 다른 문제가있다

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

j은 기존의 루프 안에 중첩 된 루프에서 강화 될 것이다 i < cols. 이 값은 i < rows이어야합니다. 루프 안에서 크기가 [cols] 인 행을 할당합니다. 올바른 행입니다. 위에서 짤깍 소리를 내면서, 당신이 자세히 보면, 나는 정정했다.