c로 코딩중인대;
double RWORK[5000000];
정도 하면 오류가 나더라구요 ㅠ
double RWORK[1000000];
정도로 하면 오류가 안나고… ㄷㄷ
5000000개 이상 필요한대
좀더 키울수 없는건가요?
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 함수로 설정할 수 있습니다.
크엌 ㅠㅠ 뭔가 어렵네요 … ㄸ ㅋㅋ
악~!! 되네요 !!
감사합니다 ㅎㅎ