From Patrick Hynds (repro in link above):
If you try to allocate an array with a size range between 0x027fefbd and 0x027fffec, the framework throws exceptions. This range corresponds to memory block of little under 40MB. But if allocate a buffer smaller than or larger than this range, then every thing is fine. So the following call will fail.
Byte test = new Byte[0x027ffc22];
It looks like there are different algorithms for big memory block allocation. Is there something special about this range? Anyone? Note: I'm running this on a box with 512megs. Does this behave different on a box with more or less?
UPDATE: Until someone gives an good explaination, Dejan has added this to the .NET Bugs Registry...