malloc 질문입니다 고수님들 조언 부탁드려요...흑흑

익명 사용자의 이미지

#include
#include

void getdata(int *a[]){

int num_data;
printf("Input the number ");
scanf("%d",&num_data);
a=(int **)malloc(num_data*sizeof(int));
scanf("%d",a[0][0]);
}

void main(){

int *a[3];
getdata(a);

}
getdata에서 자료를 받아 malloc으로 메모리 할당을 할려고 하는데

동적 2차원 배열은 어떤 식으로 malloc을 구현하는지

잘 모르겠습니당...고수분들 혹 아시면 제발 알려주세요..^^

익명 사용자의 이미지


두가지 방법이 있습니다.
가로세로가 규칙적일때는 x * y 값만큼 할당해서 사용하고
x * y기 불규칙적일때는 single linked list로 구현해서
사용하세요.

익명 사용자의 이미지

#include
#include
#include

void main(void)
{
char **p2;
int i;

p2 = (char **)malloc( sizeof(char *) * 10);
if( p2 == NULL )
{
printf("p2 malloc error\n");
exit(1);
}

for(i=0; i<10; i++)
{
p2[i] = (char *)malloc( sizeof(char) * 30 );
if( p2[i] == NULL )
{
printf("p2[%d] malloc error\n", i);
exit(1);
}

memset( p2[i], 0x00, 30 );

sprintf( p2[i], "Allocation memory number %d\n", i);
printf("%s", p2[i]);
}

for( i=0; i<10; i++)
{
free(p2[i]);
}

free(p2);
}

간단한 예제인데 해당 플랫폼에 알맞게 include 조정해 주시고요.
저는 Borland C++ 5.02에서 컴파일한 것이라서 만일 리눅스에서
한다면 include는 좀 조정이 필요할겁니다...

근데 꼭 이렇게 쓸 이유가 있을까하는 생각이 듭니다.

그럼...