CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ 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의 결과는 멀까요? (버그?)


---
                      雲心如水心
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.