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 // 실행)
문제가 정확한 어떤 생각? 감사합니다.
'test [0] [i]'여기서 test [0]은 단지 하나의 int long입니다. 정의되지 않은 동작입니다. 오류가 발생하면 프로그램이 수행 할 수있는 가장 좋은 작업입니다. – Sinkingpoint
이 줄은'test = new * [3]; 틀린가? test [0] = 0;'test [0] = 0;'test [0] = 0;'test [0] [0] = 0; [i] = 0;') –
문제가 있습니다. 모두 감사합니다! 나는 2 차원 어레이를 검토해야한다고 생각한다 : D –