【发布时间】:2009-08-21 01:56:49
【问题描述】:
我使用 Win32 API 调用 VirtualAlloc/VirtualFree 来分配和释放大于 2GB 的内存块。
我应该能够使用 System.Runtime.InteropServices.Marshal 类中的 AllocHGlobal 函数来做同样的事情。
但是,以下代码给出了算术溢出异常(注意显式转换为 long 应该实例化一个 64 位指针)。
Dim p As IntPtr = System.Runtime.InteropServices.Marshal.AllocHGlobal(New IntPtr(CLng(3221225472)))
System.Runtime.InteropServices.Marshal.FreeHGlobal(p)
所以我的问题是,我可以使用 AllocHGlobal 分配超过 2GB 的内存吗?如果有,怎么做?
【问题讨论】:
标签: vb.net 64-bit memory-management