2012-03-10 4 views
-1

내가 뭘 잘못하고 있니? 나는 new를 사용하여 할당했으나 []을 삭제하려고하면 오류가 발생합니다.2 차원 배열 포인터 활용

mycode :

int** ma; 
int n; 
int m; 
m = nr_col_lin; 
n = nr_col_lin; 

ma = new int*[m]; 
for(i = 0; i < m; i++) 
    ma[i] = new int[n]; 

for (i = 0; i < m; i++) 
{ 
    for (j = 0; j < n; j++) 
    { 
     ma[i][j] = 0; 
    } 
} 

과 dealocation :

for(int i = 0; i < m; ++i) 
    delete[] ma[i]; 

delete [] ma; 

편집 : 나는이 코드에 없었다 ... 문제를 발견

... 내가 삭제했다 내가 배정하지 않은 것.

+3

솔직히 "나에게 오류가 발생합니다"라는 말은 누구에게나 도움이되는 진술이라고 생각합니까? 당신이 갈 수있는 가장 좋은가요? –

답변

3

전혀 없습니다 코드에 잘못되었습니다. 이거 완벽 해. nr_col_lin이 유효한 값으로 초기화되었다고 가정하면 probem은 다른 위치에 있어야합니다. 즉, 0 또는 음수가 아닌지 확인하십시오. size_t 또는 부호없는 정수 값인 경우 mn이 0보다 큰지 확인하십시오.

+0

나는 그것을했다. 그러나 그것은 아직도 나에게 오류를 준다. 만약 내가 2 포인터 ma1과 ma2, 그리고 내가 말한 ma1 = ma2, 그 잘못된 삭제 [] ma1을 사용하여? – Dementor

+0

'정답' '예', '완벽'... 별표와 '삭제'의 수를 세고 끔찍하게 곱해서 끔찍한 부스러기로 뿌려주십시오. –

+0

@Dementor : 그렇지 않습니다. 그러나 delete [] ma1 다음에'ma2'를 사용하는 것은 잘못입니다. 대부분의 경우, 매달린 포인터를 역 참조합니다. –