우분투 내에 double 형 변수 array 개수 무한대로 못하나요?

c로 코딩중인대;

double RWORK[5000000];

정도 하면 오류가 나더라구요 ㅠ

double RWORK[1000000];

정도로 하면 오류가 안나고… ㄷㄷ

5000000개 이상 필요한대

좀더 키울수 없는건가요?

동적 메모리 할당을 사용하시는 게 어떨까요

Stack과 Heap 메모리를 이해 하셔야 합니다.

[code:2wx4ekcc]double RWORK[5000000];[/code:2wx4ekcc]
위 코드는 Stack 메모리를 사용하며 Stack 메모리는 크기가 제한 되어 있습니다.
그 크기를 알아 보는 방법은,
쉘에서 ulimit -Sa 명령으로 확인하고 ulimit 명령으로 원하는 크기로 다시 설정할 수 있습니다.
단, 새 값들은 ulimit -Ha 명령으로 확인한 값 보다는 클 수가 없습니다.
(그런데 이 방법은 ‘참고’ 입니다. 왜냐하면 불편하니까요. 자세한 사용법은 man ulimit.)

C 코드 안에서 해결하려면 System Call 함수 malloc를 사용하면 됩니다.

[code:2wx4ekcc]double *RWORK = (double *) malloc(5000000 * sizeof(double));[/code:2wx4ekcc]
변수 사용이 끝나면 반드시 free(RWORK) 해야 합니다.

참고로 pthread의 Stack 메모리 크기는 pthread_attr_getstacksize 함수로 확인하고
pthread_attr_setstacksize 함수로 설정할 수 있습니다.

크엌 ㅠㅠ 뭔가 어렵네요 … ㄸ ㅋㅋ

악~!! 되네요 !!

감사합니다 ㅎㅎ