2014-09-07 3 views
1

영어가 능숙하지 않습니다. 베트남어로 제 질문에 문법 오류가있을 수 있습니다.2 차원 배열을 삭제할 때 오류가 발생했습니다.

오늘 나는 코딩 연습을하고 있는데, 2 차원 배열을 삭제하면 오류가 발생합니다. 그런 다음 테스트 할 간단한 코드를 작성하고 동일한 오류가 발생합니다. 여기 내 테스트 코드입니다 : 나는 오류가 줄에서 발생 감지, 내 코드를 디버깅 - 언제

#include "stdafx.h" 

int main() 
{ 

    int **test; 
    int i; 
    test= new*[3]; 
    for(i=0;i<3;i++) 
    { 
      test[i]=new int[1]; 
      test[0][i]=0; 
    } 

    for(i=0;i<3;i++) 
      delete[] test[i]; 
    delete[] test; 

    return 0; 
} 

"[I] [] 테스트를 삭제;". 창이 나타나고, 저에게 말한다 그 :

    윈도우 인해 TEST.EXE 또는 어떤에서 버그를 나타내는 힙의 손상에 TEST.EXE
  • 이있을 수 있습니다에 중단 점을 트리거하고있다
  • 로드 한 DLL
  • 이 오류는 test.exe에 포커스가있는 동안 F12 키를 누를 때도 발생할 수 있습니다.
  • 출력 창에 진단 정보가 더 많을 수 있습니다.

    "HEAP (28)의 요청 된 크기를지나 Y 수정할 X에서 [TEST.EXE] 힙 블록"

    주 :

    • 경우

    -and 출력 창에

  • 내가 삭제를 사용하지 않으면 오류가 발생하지 않습니다.
  • 오류는 i = 0 일 때만 발생합니다.
  • 난 단지 한 요소와 2 차원 배열을 할당하는 경우, 오류가 발생하지있다 ([] 테스트를 삭제 [0] normaly // 실행)

문제가 정확한 어떤 생각? 감사합니다.

+1

'test [0] [i]'여기서 test [0]은 단지 하나의 int long입니다. 정의되지 않은 동작입니다. 오류가 발생하면 프로그램이 수행 할 수있는 가장 좋은 작업입니다. – Sinkingpoint

+0

이 줄은'test = new * [3]; 틀린가? test [0] = 0;'test [0] = 0;'test [0] = 0;'test [0] [0] = 0; [i] = 0;') –

+0

문제가 있습니다. 모두 감사합니다! 나는 2 차원 어레이를 검토해야한다고 생각한다 : D –

답변

0

test[0][i]=0;이 색인을 잘못 알아 들었습니다. test[i][0]=0;test[i]과 일치해야합니다.

다른 모든 추측은 좋습니다.

관련 문제