출처 : http://coden.tistory.com/10


int **array = null;
intheight=8,width=6;
array = (int **) malloc( sizeof(int *)* height );
for( int i=0; i < height ; i++)
array[i] = (int *) malloc( sizeof(int)* width );


이런식으로 동적할당 하면 malloc를 height만큼 호출하기 때문에 행과 열이 나누어 진다.

memset으로 한번에 값을 지정할 수도 없고
할당된 메모리를 해제할경우 for문으로 height번만큼 해제해줘야 한다.

int **array = null;
int height=8,width=6;
array = (int **) malloc( sizeof(int *)* height);
array[0] = (int *) malloc( sizeof(int) * width*height );
for( int i=1; i< height ; i++)
array[i] = array[ 0 ] + i*width;



조금더 고쳐보면..

int **array = null;
int height=8,width=6;
array = (int **) malloc( sizeof(int *)* height);
array[0] = (int *) malloc( sizeof(int) * width*height );
for( int i=1; i< height ; i++)
array[i] = array[ i-1 ] + width;

malloc 호출을 줄일 수 있어서 시간 효율성이 좋을 듯 싶다

'C > C' 카테고리의 다른 글

포인터는 왜 어려울까?  (0) 2011.11.03
헤더 파일의 중복 정의 막기  (0) 2011.10.28
C언어 - 긴 문자열 초기화  (0) 2011.10.28
C언어 할 때 알면 좋은 것  (0) 2011.10.20

설정

트랙백

댓글