[완료]2차원 배열을 동적으로 할당
Submitted by junk11 on 금, 2008/03/07 - 2:46pm.
int ** 혹은 char ** 을
int의 2차원배열, char의 2차원 배열로 쓰고 싶습니다
메모리를 어떤식으로 할당해야 되나요?
int **array;
array = (int **)malloc(sizeof(int *) * 10);
*array = (int *)malloc(sizeof(int) * 10);
이런식으로 하면 될듯해서 해봤는데
데이터를 넣을때 세그먼트폴트가 뜨네요..
그리고 int나 char가 아닌 void 타입일때는 다른가요?


부적절한 예시 =3=3=3=3
[code]#include
#define row 10
#define col 10
int main()
{
int **array;
int i,j;
array = (int **)malloc(sizeof(int *) * row);
for(i=0; i<10; i++)
*(array+i) = (int *)malloc(sizeof(int) * col);
for(i=0; i
for(j=0; j
for(i=0; i
{
for(j=0; j
printf("%d\t", *(*(array+i)+j));
}
printf("\n");
}
return 0;
}[/code]
삭제가 안되네요 ㅠㅠ
아 몰라 아래분이 답해주셔서 지울려고 했는데 흑
예를 들어 int
예를 들어 int a[10][20]을 동적할당으로 만들고 싶다면
int **a;
a = (int **)malloc(sizof(int *)*10);
for (int i=0; i<10; ++i)
a[i] = (int *)malloc(sizeof(int)*20);
이렇게 하면됩니다.
답변 감사합니다
루프로 배열마다 따로 할당을 해줘야 되는군요
흠 이런 식으로는 사용해 본적이 없군요.
보통은 포인터 하나 준비하고
배열 X*Y 해서.. 한꺼번에 할당하지요.
설명이 난해하군요.
int *val[10]; <== 이것과 비교하면.
int **array ;
array = val 선언이죠.
*array = val[0]
음 영역을 이차 영역 10개중에 하나만 선언 하셨군요 ^^*
메모리 할당이 부족하겠네요.
[10][10] 배열에서.
[10] <--메모리 확보. 포인터형이죠 포인터를 위한 메모리 확보.
[0][0]~[0][9] 메모리 확보하신 셈이네요. 이부분이 char이나 int나에 따라 달라질듯.
실제 malloc 에서 메모리 할당을 어떻게 하는지는 확인 해봐야 겠고요.
array[0][0] ~ array[0][9]은 어떻든 제대로 동작 하겠네요.
array[1][0] ~ array[9][9]은 확보된 메모리가 없으니 문제가 될겁니다.
포인터 좋아하시는 모양이십니다 ^^
어떻든 위의형식으로. 9개의 공간은 더 쓰셔야 겠습니다.
*array = (int *)malloc(sizeof(int) * 10);
==> array[0] = (int *)malloc(sizeof(int) * 10);
이와 같으니.
array[1] = (int *)malloc(sizeof(int) * 10);
....
array[9] = (int *)malloc(sizeof(int) * 10);
하시던 다른 방법을 취하시던 메모리를 더 확보 하셔야 합니다.
도움이 되시길..