배열 크기의 최대값이 존재하나요?
조회수 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 가 발생하는 겁니다.
상기 링크를 참조하여 스택 사이즈를 늘릴 수 있습니다.
댓글 입력