32 비트 Linux 컴퓨터에서 가능한 한 큰 배열을 만들어야합니다. 내 컴퓨터에서 처리 할 수있는 가장 큰 배열 크기는 얼마입니까? 2^32입니까?컴퓨터가 처리 할 수있는 가장 큰 int 배열?
답변
2^31 및 2^32 어딘가에있을 거라 생각합니다. 주소 공간의 일부는 라이브러리 및 응용 프로그램 코드에서 차지할 것입니다. 하나의 프로세스는 2^32 개 이상의 메모리에 액세스 할 수 없으며 일부 OS는 특수 목적으로 주소 공간의 절반을 표시합니다. 리눅스가 이것을하는지 아닌지는 확실치 않습니다.
포인터의 크기가 32 비트이므로 수행하는 작업에 관계없이 2^32보다 큰 선형 메모리 덩어리를 얻을 수 없습니다. "선형 메모리 덩어리"가 아닌 것은 배열이라고 할 수 없습니다.
이 대답은 실제로는 유용하지 않습니다. 32 비트 포인터가 주어지면 2^32보다 큰 메모리 블록을 할당 할 수 없지만 코드 카가 가지고있는 것처럼 정수 자체의 크기를 완전히 설명하지 못합니다 그의 대답에. 그가 말했듯이 실제 제한은 7 억 5 천만 개의 정수가 될 가능성이 더 높습니다. 프로그램 코드, 라이브러리 등에 대한 여지가 없기 때문에 너무 많을지라도 더 많은 질문이 있습니다. 왜 그렇습니까? user69514 실제로하려고합니까? –
@Eric Melski : 1) 블록 크기를 바이트 단위로 얘기했습니다. 2) 큰 배열에 대한 이유는 중요하지 않습니다. OP가 "잘못된"것을 시도하면 결국 그는 실수를 발견하고 그로부터 유용한 것을 배울 것입니다. – SigTerm
Is there a max array length limit in C++?
가 2 개 한계, 물리적 메모리,하지만 그 무시, 그것은 전혀 아무 것도이 같은 방법으로, 진행되지 않도록 주어진 (2^32) -1을해야 당신 ' 실제 메모리에 의해 제한되므로 프로그램은 허용되는 것으로 제한됩니다.
정확히 어디에서 프로그램 코드가이 경우에 저장 될까요? (2^32-1)? – SigTerm
숫자가 약 3GB라고 가정하면 (합리적인 것처럼 보임) 정수는 각각 4 바이트로 기억해야합니다. 최대 3G/4 = 약 7 억 5 천만 개 개의 정수을 기억해야합니다.
물론 3GB 상당의 어레이를 할당했다면 다른 주소 공간도 남지 않을 것입니다.
큰 숫자 배열로 작업 할 계획이라면 메모리 매핑 파일 (리눅스에서는 mmap으로 끝남)을 사용하고 파일의 작은 부분을 시간 (예 : 100MB). 즉, 크기의 데이터를 크기로 설정하면 및으로 주소 공간을 절약 할 수 있습니다.
- 1. array_diff로 큰 배열 처리
- 2. 널 배열 int 배열
- 3. 큰 코드 조각을 주석 처리 할 수있는 방법이 있습니까?
- 4. C# - 다차원 int 배열
- 5. JNI의 int 배열 얻기
- 6. Winsock을 통해 int 배열 보내기
- 7. 큰 동적 배열 ++
- 8. 정렬의 int 배열
- 9. 클래스의 static int 배열
- 10. 자바 int ... 배열 표기법
- 11. 할당 큰 (5000) 배열
- 12. DLLImport Int ** - 수행 할 수있는 방법
- 13. Symbols (Ruby에서)를 사용할 필요없이 문자열을 처리 할 수있는 최신 컴퓨터가 없습니까?
- 14. 데이터베이스에 큰 배열 저장
- 15. 큰 배열 크기의 세그먼트 오류
- 16. 배열 처리 루프 최적화
- 17. 큰 xml 파일 처리
- 18. Int 및 * Char - C++ 배열
- 19. 큰 텍스트 파일 처리
- 20. 컴퓨터가 잠겨있는 동안 사용자 작업을 모방 할 수있는 방법
- 21. 큰 이미지를 처리 할 때 Blackberry - OutOfMemory
- 22. 크기가 매우 큰 배열 할당
- 23. 클라이언트로의 큰 바이트 배열 전송
- 24. 모델에서 처리 할 수있는 최대 정수를 결정하는 방법은 무엇입니까?
- 25. 코드에서 큰 숫자 처리
- 26. 큰 사진 업로드 처리
- 27. XML : 큰 데이터 처리
- 28. 큰 배열 C# OutOfMemoryException
- 29. PHP 배열 처리 문제
- 30. OutOfMemoryException 큰 파일 처리
가능한 복제본 [C++에는 최대 배열 길이 제한이 있습니까?] (http://stackoverflow.com/questions/216259/is-there-a-max-array-length-limit-in-c) –
왜 그런 큰 배열을 만들고 싶습니까? 아마도 당신은 우리가 해결하려고하는 실제 문제를 말해야합니다 ... –