파일스트림으로 받아올 수 있는 최대 용량이 얼마인가요??
글쓴이: 익명 사용자 / 작성시간: 수, 2016/11/16 - 10:44오후
byte[] b = null;
using (FileStream f = new FileStream(sInputFilename, FileMode.Open, FileAccess.Read))
{
b = new byte[f.Length];
f.Read(b, 0, b.Length);
...
}
이런식으로 파일 읽어오고 있는 중인데요.
1gb까지는 시도해 봤는데 3GB짜리는 오버플로우 에러 나네요;;
최대 몇 기가까지 읽어올 수 있는 건가요??
혹시 제한없이 읽어 올 수 있는 다른 방법이 있을까요??
Forums:
저는 윈도우즈 쪽 프로그래밍을 하지는 않지만 궁금해서
저는 윈도우즈 쪽 프로그래밍을 하지는 않지만 궁금해서 찾아보니 아래와 같이 나오네요.
아마 아래 내용에 나와 있는 것처럼 제한이 걸려있는 것 같습니다.
http://stackoverflow.com/questions/573692/is-the-size-of-an-array-constrained-by-the-upper-limit-of-int-2147483647/573693#573693
https://msdn.microsoft.com/en-us/library/hh285054(v=vs.110).aspx
스트림에서 주고받을수 있는 데이터는 무한입니다.
스트림에서 주고받을수 있는 데이터는 무한입니다. 스트림 받아다 저장하는 메모리 공간이 최대 얼마나 되느냐가 문제일겁니다. 메모리에 일부만 저장후 차면 디스크 내보내고 하는 식으로 하면 무한도 가능합니다.
32비트라면 사용가능한 주소 4G중 커널용으로 1G가 잡히게 되고, 나머지가 프로세스용이 되는데, 실행파일이 로드되는 공간, 스택 등 때문에 한번에 잡을 수 있는 메모리 블록의 최대크기는 보통 1~2G가 한계입니다.
Written By the Black Knight of Destruction
댓글 달기