글
c/c++ 2차원(이차원) 배열 동적할당 방법2
C/C
2011. 10. 23. 21:06
출처 : 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 );
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 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;
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 |