2016-09-07 2 views
1

2D integer array에 포함될 수있는 요소의 수는 C에 제한이 있습니까?
추신 : 배열을 선언하는 데 공간 제약이있을 것으로 예상했지만 인터넷에서 이러한 참조를 찾을 수 없습니다.2D 정수 배열의 최대 요소 수

+1

배열은'SIZE_MAX' 바이트를 초과 할 수 없습니다 (이 상수는'limits.h'에 정의되어 있습니다). 특정 시스템은 사용 가능한 메모리 양에 따라 제한이 더 적을 수 있습니다. –

+0

가능한 복제본 http://stackoverflow.com/questions/216259/is-there-a-max-array-length-limit-in-c –

+1

@RishikeshRaje 그건 C++ 질문입니다. –

답변

1

귀하의 RAM 또는 사용 가능한 메모리에 따라 다릅니다.

i:e: 전역 배열 a[100000][10000]을 선언 할 때 내 프로그램이 중단되는 문제가 있었지만 지금은이 선언을 사용하는 것이 좋습니다.

+2

이것은 사실이 아닙니다. 예를 들어, 32 비트 Windows에서 컴퓨터가 RAM보다 많은 경우에도 4,29Gb 이상을 할당 할 수 없습니다. 어쨌든, C는 하나의 객체에 할당 할 수있는 메모리의 양을 알아내는 방법으로'size_t' 타입을 제공합니다. – Lundin

+0

@ Lundin : 오해를 해결해 주셔서 감사합니다. 나는 그것을 지금 얻었다라고 생각한다. – jbsu32

-1

size_t 형식은 배열을 포함하여 프로그램에서 개체의 크기를 포함 할 수있을만큼 충분히 크게 정의됩니다. 따라서 가능한 최대 배열 크기는 2^(8*sizeof(size_t) 바이트로 설명 할 수 있습니다.

편의상이 값은 limits.h에있는 SIZE_MAX 상수를 통해 얻을 수 있습니다. 최소 65535는 보장되지만 실제로는 더 큰 값입니다. 32 비트 시스템에서는 2^32이고 64 비트 시스템에서는 2^64입니다.

-1

최대 C/C++ 표준 : x * y * z <= SIZE_MAX입니다. SIZE_MAX는 구현 정의되며, x는 배열의 한 차원이고, y는 다른 차원이며, z는 바이트 단위의 요소 크기입니다. 예 : element_t A[x][y], z = sizeof(element_t).