Maximum length of byte[]?
Solution 1
The current implementation of System.Array
uses Int32
for all its internal counters etc, so the theoretical maximum number of elements is Int32.MaxValue
.
There's also a 2GB max-size-per-object limit imposed by the Microsoft CLR.
A good discussion and workaround here...
And a few related, not-quite-duplicate, questions and answers here...
- Is there a limit of elements that could be stored in a List ?
- Very large collection in .Net causes out-of-memory exception
- what is the max limit of data into list in c#?
Solution 2
On .NET 4.5 The maximum instantiatable length of a byte array is: 2147483591, or 56 less than int.MaxValue. Found via:
for (int i = int.MaxValue; i > 0; i--)
{
try
{
byte[] b = new byte[i];
Console.Out.WriteLine("MaxValue: " + i);
Environment.Exit(0);
}
catch (Exception ignored)
{}
}
Solution 3
Maximum length of a byte array is: 2130702268. for example:
var countryCodes = new byte[2130702268];
Related videos on Youtube
GoHeavyOrGoHome
Updated on July 09, 2022Comments
-
GoHeavyOrGoHome almost 2 years
I'm trying to create an array of
byte
s whose length isUInt32.MaxValue
. This array is essentially a small(ish) in-memory database:byte[] countryCodes = new byte[UInt32.MaxValue];
On my machine, however, at run-time, I get a
System.OverflowException
with "Arithmetic operation resulted in an overflow".What's the deal? Do I need to use an
unsafe
block andmalloc
? How would I do that in C#?-
James about 9 yearsI had no idea there were so many countries!
-