| [ CnUnix ] in KIDS 글 쓴 이(By): gureumi (구르미) 날 짜 (Date): 2002년 11월 23일 토요일 오전 10시 06분 21초 제 목(Title): Re: C에서 배열 할당 문제 getrlimit()을 사용해서 알아낸 최대 스택 사이즈의 값은 의미가 없더군여.. ------- #include <stdio.h> #include <sys/time.h> #include <sys/resource.h> #include <unistd.h> int main() { unsigned int i; int ii[2000000] struct rlimit rlim; getrlimit(RLIMIT_STACK, &rlim); printf("Max Stack Size:%u\n", rlim.rlim_max); printf("Current Stack Size:%u\n", rlim.rlim_cur); printf("Hello\n"); for (i=0; i<2000000; i++) { ii[i] = i; } printf("Bye\n"); return 0; } ----------- Max Stack Size:2147483647 Current Stack Size:8388608 Hello Bye ---------- 2기가바이트(커널을 위해 남겨둔 2기가를 뺀 전부)로 나오죠? 그런데도 솔라리드,리눅스 둘다 Segmentation Fault가 뜨더군여.. 실제 스택의 한계치는 다음 명령을 통해 구할수 있더군요. 솔라리스의 경우입니다.(리눅스는 비슷한 명령이 없는듯..) ---- $ ulimit -a time(seconds) unlimited file(blocks) unlimited data(kbytes) unlimited stack(kbytes) 8192 coredump(blocks) unlimited nofiles(descriptors) 256 vmemory(kbytes) unlimited ----- 결국 발견된 스택 크기의 최대치는 8메가바이트.... getrlimit의 결과는 멀까요? (버그?) --- 雲心如水心 |