64位VB.NET分配> 2GB的RAM(.NET错误?)

use*_*755 5 .net c# vb.net memory 64-bit

我有一个64位的VB.NET应用程序,并希望分配一个> 2GB的缓冲区.

在下面的代码中,"new"和"ReDim"都抛出"OverflowException".

当这些函数只接受带符号的32位值时,如何分配> 2GB的缓冲区?

(这可能在C#中?)

编辑 - 我正在运行带有4GB RAM的WinXP 64.

Dim width As Long = 19005
Dim height As Long = 32768

Dim buffer() As Byte = New Byte((width * height * 4) - 1) {}

Dim size As Long = (width * height * 4) - 1
ReDim buffer(size)

use*_*755 2

显然,即使在 64 位操作系统上运行的 64 位 .net 应用程序下,也不可能分配超过 2GB 的空间。

我发现这非常令人失望,而且完全没有考虑 64 位应用程序和操作系统的用途。我正在处理巨大的图像,并且希望能够同时处理 RAM 中的所有原始字节。现在我必须实现分页算法将块限制为 2GB。

嘿 Microsoft,您在即将发布的 .NET 版本中解决这个问题怎么样?是的,我说修复。 那是因为它坏了。当你做了这样的蠢事时,你如何期望 64 位应用程序能够成功呢?(你能看出我很生气吗?)感谢您的聆听。

关联

http://blogs.msdn.com/joshwil/archive/2005/08/10/450202.aspx