배열 크기의 최대값이 존재하나요?

조회수 8921회

다음 코드를 디버깅하면 stack overflow가 발생합니다. 혹시, 정적 배열은 선언할 수 있는 배열의 최대 크기가 존재하나요?

void main()
{
      int StaticDoubleArray1[2500][2500] = { 0 };

}

  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

  • https://www.clien.net/service/board/kin/4098266

    하드웨어와 컴파일러마다 다를거라 예상해봅니다 어느환경에서나 컴파일할 수 있는 코드를 작성하기 위해서는 배열의 갯수는 적정선에서 선언해주며 동적할당을 해야겠죠

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 변수 선언, 원소 접근 등이 정적 배열이 더빨라서 정적 배열을 사용하려고 했었어요. 그런데 정적할당으로는 많은 양의 데이터를 처리하기 힘들군요.. 알 수 없는 사용자 2019.4.21 21:49
  • 해당 문제는 스택 크기 문제이지 정적배열크기 문제가 아닙니다.

    지역변수는 스택이라는 공간을 사용하여 저장을 하는데 visual c++ 이라는 한정(윈도우)하에 기본 스택 사이즈는 1메가 입니다.

    int StaticDoubleArray1[2500][2500] = { 0 };
    

    상기의 지역변수의 크기는 int(4byte 가정) * 2500 * 2500 입니다.

    즉 2500 * 2500 * 4 = 25000000 byte 이며 이건 약 24메가에 상당합니다. 그러므로 stack overflow 가 발생하는 겁니다.

    https://yumere.tistory.com/20

    상기 링크를 참조하여 스택 사이즈를 늘릴 수 있습니다.

    • ㅇㅇ 스택크기가 크다면 문제가 없겠죠 동적할당의 경우에도 힙 크기 이상의 할당을 시도하면 오류가 나겠죠 알 수 없는 사용자 2019.4.22 06:49

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)