(c++)다차원 배열 동적할당 시 프로그램이 죽는 문제...
글쓴이: bluehat / 작성시간: 월, 2012/11/05 - 4:25오후
안녕하세요,
아래와 같이 3차원 배열을 동적할당하는 함수를 만들었습니다.
#include <iostream>
#include <fstream>
using namespace std;
void initarray(int ****a, int s1, int s2, int s3)
{
//*a=NULL;
*a=new int**[s1];
for(int i=0;i<s1;i++) {
*a[i]=new int*[s2]; //(int**)malloc(sizeof(int*)*s2);
for(int j=0;j<s2;j++)
*a[i][j]=new int[s3];//(int*)malloc(sizeof(int)*s3);
}
//배열을 15로 초기화
for(int i=0;i<s1;i++)
for(int j=0;j<s2;j++)
for(int k=0;k<s3;k++) *a[i][j][k]=15;
}
int main()
{
int ***dd;
initarray(&dd, 10, 10, 2);
cout << dd[1][1][1];
return 0;
}VS2008에서 이 코드를 실행하면 main.exe의 작동이 중지되었습니다. 문제가 발생하여 프로그램 작동이 중지되었습니다. Windows에서 해당 프로그램을 닫고 해결 방법이 있는지 알려준다고 합니다;;
제가 어떤 실수를 했는지 모르겠습니다. 고수님들의 도움을 좀 부탁드립니다.
감사합니다.
Forums:


우선순위를 바꾸어봤더니 정상
우선순위를 바꾸어봤더니 정상 동작하는군요.
#include <iostream> #include <fstream> using namespace std; void initarray(int ****a, int s1, int s2, int s3) { int i, j, k; //*a=NULL; *a = new int**[s1]; for (i=0; i<s1; ++i) // for(int i=0;i<s1;i++) { (*a)[i] = new int*[s2]; //(int**)malloc(sizeof(int*)*s2); for (j=0; j<s2; ++j) // for(int j=0;j<s2;j++) (*a)[i][j] = new int[s3];//(int*)malloc(sizeof(int)*s3); } //배열을 15로 초기화 for(i=0; i<s1; i++) for(j=0; j<s2; j++) for(k=0; k<s3; k++) (*a)[i][j][k]=15; } int main() { int ***dd; initarray(&dd, 10, 10, 2); cout << dd[1][1][1]; return 0; }저는 이렇게 생각했습니다.
댓글 달기