1.프로그램이 처음에 어느정도의 메모리를 할당 받잖아요? 그러면 이게 어떤기준으로 얼마만큼 할당을 받나요?
2.stack영역에 최대로 얼마만큼의 변수가 선언될 수 있나요? 예를 들어서 c코딩을 할때 변수로 val[15][25000]을 선언하니까 오류가 뜨더군요.
1.은 [번역] Anatomy of a Program in Memory ( http://woodz.tistory.com/53 ), 또는 좀 오래된 글이지만 https://kldp.org/node/199 가 도움이 될지도..
2.의 스택크기는 ulimit 명령으로 확인 및 설정할 수 있습니다.
$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 31593 max locked memory (kbytes, -l) 32 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 31593 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
스택크기가 10240 == 10MB 라고 나오네요. 이는 물리적인 한계는 아니므로 늘리거나 줄일 수 있습니다.
아래 샘플에서 12MB짜리 어레이를 스택에 정의하고 있는데, 스택크기가 10MB인 기본상태로 실행하면 오류가 발생하고, 20MB로 늘려서 실행하면 오류가 사라집니다. 대충 감이 올 것이라 생각합니다.
$ cat stack_size.c int main() { int arr[3][1024][1024] = {0}; // 4 * 3 * 1024 * 1204 = 12MB return 0; } $ gcc -o stack_size stack_size.c $ ulimit -s 10240 $ ./stack_size 세그멘테이션 오류 $ ulimit -s 20480 $ ulimit -s 20480 $ ./stack_size $
https://technet.microsoft.com/ko-kr/sysinternals
[TechDays Korea 2014] Visual Studio의 다양한 진단 및 분석 도구 활용방안https://mva.microsoft.com/ko/training-courses/techdays-korea-2014-visual-studio--11316?l=BNCmW5XBB_104984382
---------------------------------------------------------------------------- 젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다. 정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
1.은 [번역] Anatomy of a Program
1.은 [번역] Anatomy of a Program in Memory ( http://woodz.tistory.com/53 ),
또는 좀 오래된 글이지만 https://kldp.org/node/199 가 도움이 될지도..
2.의 스택크기는 ulimit 명령으로 확인 및 설정할 수 있습니다.
$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 31593 max locked memory (kbytes, -l) 32 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 31593 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
스택크기가 10240 == 10MB 라고 나오네요.
이는 물리적인 한계는 아니므로 늘리거나 줄일 수 있습니다.
아래 샘플에서 12MB짜리 어레이를 스택에 정의하고 있는데, 스택크기가 10MB인 기본상태로 실행하면 오류가 발생하고, 20MB로 늘려서 실행하면 오류가 사라집니다. 대충 감이 올 것이라 생각합니다.
윈도우라면. 프로그램도 참고해보세요.
https://technet.microsoft.com/ko-kr/sysinternals
[TechDays Korea 2014] Visual Studio의 다양한 진단 및 분석 도구 활용방안
https://mva.microsoft.com/ko/training-courses/techdays-korea-2014-visual-studio--11316?l=BNCmW5XBB_104984382
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기