double 형으로 10000개 정도의 배열을 선언하면 실행되가다 죽습니다
글쓴이: uribery / 작성시간: 수, 2006/01/18 - 2:01오후
안녕하세요.
double aa[10000];
이런식으로 정적으로 배열을 선언하면
컴파일은 이상없이 되는데
실행 시키면, 실행이 되다가
프로그램이 바로 죽어버립니다.
double aa[7000];
이런것은 별 문제가 없구요.
double aa[7000];
double bb[7000];
이런식으로 몇개 더 이용하는것도 별 문제가 없구요.
kernel 2.4.18에서 pxa255용으로 수정된 커널을 이용하고 있습니다.
크기 제한하는 부분이 따로 있습니까?
있다면 어떻게 수정을 해야 사용이 가능할까요?
그럼 좋은 하루 보내세요.
Forums:
gdb 로 어떤 상황에서 죽는지 한번 확인해보심이...일단 컴파일
gdb 로 어떤 상황에서 죽는지 한번 확인해보심이...
일단 컴파일이 됐다면
죽을 이유는 없을것 같습니다.
어딘가 포인터를 잘 못 다루신게 아닐까요??
일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.
컴파일이 성공한 것과, 실제 실행 가능한 것과는 어느 정도 차이가 있습니
컴파일이 성공한 것과, 실제 실행 가능한 것과는 어느 정도 차이가 있습니다. 특히 정적으로 큰 배열을 선언한 경우, 얼마든지 문제를 일으킬 수 있습니다. 게다가 embedded board용인 것 같은데, 그럼 swap area가 없으니 메모리가 부족하면 바로 종료되겠죠. 배열을 작은 것을 사용하던지 아니면 malloc을 쓰는 것을 생각해 보기 바랍니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
Re: double 형으로 10000개 정도의 배열을 선언하면 실행되가다 죽습니다
그 플렛폼에 대해 확실히는 모릅니다만, 배열 크기로 추측컨데,
그 플렛폼의 연속 메모리 한계가 64KB 가 아닌가 싶습니다.
sizeof(aaa) 는 80000 바이트
sizeof(aa) 는 56000 바이트 이고 몇개 더 선언 가능.
이 숫자로 추측컨데 그런 느낌이 드네요.
도스라면 느리더라도 huge 포인터 같은 것으로 극복하겠으나, gcc 라면 다른 방법(크기를 줄이는)을 찾으셔야 될 것 같네요. 저 이유라면 동적할당해도 안될 것 같은데, 테스트 결과를 알려주시겠습니까?
Orion Project : http://orionids.org
double 형이... 10000개라...
8 bytes * 10000 = 80000 bytes = 78.125 KB
PXA255 라면 스트롱암인데... 헐... 캐쉬 메모리가 그렇게 크던가요? ( ' ')a
전체 64 Kbytes 로 나오는데, 하바드 아키텍쳐라면 D-cache 만 32 Kbytes...
흠... 메모리 페이지 크기가 32 Kbytes 인데... 78.125 KB 라니 너무 커요...
배열보다는 포인터를 이용해서 쓰시는게 어떨까요? :)
예. 감사합니다. 말씀하신대로 확인해보고 다시 답글을 남겨놓겠습니다.
감사합니다. ^^
댓글 달기