2013-03-23 3 views
0

스택에 거대한 행렬을 할당하는 스택 오버플로가 있습니다. (그 점에 동의합니다. 그곳에 할당하는 것은 어리 석습니다) 그리고 다음 코드를 작성하고 있습니다.새로운 행렬 [N] [N] 실패

error C2440: '=' : cannot convert from 'double (*)[1000]' to 'double(*)[1000][1000]' 

이 이유는 새와 bidimensional 어레이를 할당 할 수 첨자 인덱스 매트 행렬의 요소에 액세스 할 [X] [Y]

double (*mul1)[N][N]; 
mul1 = new double[N][N]; 

I 오류를 수신 있어요?

+0

이 실제로 중복으로 링크 된 질문 사람이 약간 다릅니다 N은 컴파일시 알려진. 'double (* mul1) [N]; '을 사용하면 중첩 배열에 대한 링크 된 질문에 나타나는 포인터 간접 참조를 피할 수 있습니다. (키는'[']의'*'_replaces_와'new T []'가 첫 번째 요소에 대한 포인터를 반환한다는 것입니다.) 또는 unique_ptr을 쓸 수 있습니다. mul1 (new double [N] [N ]);'자동 정리를합니다. – entheh

답변

2

당신은 너무처럼 작업을 수행 할 수 있습니다 (I 가정) 때문에

int N = 10 ; 
double** mul1 = new double*[N]; 
for(int i = 0; i < N; ++i) 
    mul1[i] = new double[N];