메모리 할당 사이즈를 런타임시에 결정하는 방법 좀 알려주세요..
글쓴이: trymp / 작성시간: 화, 2011/09/06 - 3:47오후
일반적으로 아래와 같이 코딩한다면
unsigned char arr[100] = {0,}
컴파일시에 arr이라는 배열에 100 byte 가 할당되잖아요.
이 사이즈를 플랫폼에 따라 동적으로 바꾸고 싶습니다.
플랫폼에 따라 런타임시 인식하여 'A' 라는 플랫폼에서는 50byte
'B' 라는 플랫폼에서는 100byte 이런식으로요
heap 이든지 다른 메모리 영역이든지 상관없습니다.
이런 사이즈를 조정해야 할 변수가 많습니다.
이것을 어떻게 런타임시에 인식해서 동적으로 잡을지가 너무 애매하네요.
고수님들의 많은 조언부탁드립니다.
Forums:
컴파일타임에 결정해도 괜찮을듯 해요 char
컴파일타임에 결정해도 괜찮을듯 해요
char *arr;
#if WIN32
arr = malloc( 100 );
#endif
#if LINUX
arr = malloc( 50 );
#endif
플랫폼을 알 수 있게 define 을 해놓고 사용하면 될듯하네요.
우선 떠오르는 것이 조건 컴파일(#if)이
우선 떠오르는 것이 조건 컴파일(#if)이 있는데,
이건 컴파일 타임에 결정되는 것이라,
런타임시에 배열 arr[100] 크기를 가변적으로 줄일 수는 없을듯 합니다.
배열을 사용하지 않고 포인터를 사용한다면,
char *p = malloc(100);
char *p2 = realloc(p, 50); 으로 가능할듯 합니다만...
From:
*알지비 (메일: rgbi3307(at)nate.com)
*커널연구회(http://www.kernel.bz/) 내용물들을 만들고 있음.
*((공부해서 남을 주려면 남보다 더많이 연구해야함.))
질문이 에매한 면이 있습니다만.. 동일 프로그램을
질문이 에매한 면이 있습니다만.. 동일 프로그램을 여러 플랫폼에서 source code 수정없이 컴파일만 해서 사용하는 경우라고 가정하면
환경변수를 이용하면 될겁니다.
프로그램 시작 시에 환경변수를 읽고 거기에 따라 플랫폼에 종속적인 사항들을 코딩하면 될 듯.
Life rushes on, we are distracted
댓글 달기