Array를 선언할 때 두 가지 방법에 대한 질문
글쓴이: portgas.d.ace / 작성시간: 금, 2010/02/12 - 12:48오후
코드를 읽다보니 작은 궁금증이 생겼습니다. 참고로 저는 C 프로그래밍을 하고 있습니다.
int **fd_tp; fd_tp = malloc(numOfProc * numOfProc * sizeof(int));
int fd_tp[numOfProc][numOfProc];
전자는 동적 메모리를 할당한 후 사용하는 것이고, 후자는 배열을 사용하는 것이므로 조금 다르긴 하지만,
사실상 두 개가 똑같은 의미가 아닌가요? 후자와 같이 사용하는 것이 '저로서는' 더 편리해보이는데 전자와 같이 사용하는 경우는 어떨 때인가요?
Forums:
..
numOfProc 값을 알수 없는 경우 입니다.
..
값을 알 수 없어 동적 할당을 해야 하는 경우에도 그렇고, 메모리 절약을 위해서도 많이 사용합니다.
최근 이미지 관련 프로그램을 많이 하게 되어서 그런지 100M짜리 이미지 2,3장 저장할 배열을 미리 만든다고 생각해보세요. 300M;;;;;
결국 300M를 사용하는 것은 동일하지만, 동적으로 할당해서 1장이 먼저 처리 된다면 그 한장에 대한 메모리를 해제해 버리면 200M만 있어도 되잔아요.
후자의 경우는...
후자의 경우는 C99문법에서 추가된 기능이고요.
이전 문법에서는 런타임에 배열의 크기를 지정해 줄 수 없죠.
(무조건 미리 크기를 지정해 놔야 합니다.)
그리고 동적으로 할당하더라도 후자의 경우는 스택에 저장되기 때문에 큰 배열을 잡으면 문제가 생길 수 있습니다.
댓글 달기