我需要分配超过2GB的内存。
GlobalHAlloc
的内容,但此方法只有32位大小参数我应该使用Windows API吗?我知道这很难做到,我知道我会泄漏很多记忆,因为我没有这方面的技能......
但.NET framework 4.5中是否有类似GlobalHAlloc
的内容,这让我可以轻松地分配内存?我想做自己的类MemoryBlock
,因为我不喜欢数组类。
答案 0 :(得分:6)
您可以使用多种方法来获取更大的内存块。
AllocHGlobal
实际上需要一个IntPtr
,这是一个64位大小的64位值。HeapAlloc
。同样,它需要一个指针大小的参数。CoTaskMemAlloc function
,该函数也采用指针大小的参数。由于您声明AllocHGlobal
仅采用32位参数,因此您的进程似乎是32位。这才是真正的问题。在32位进程中,您不能分配超过4GB(总计)。而这个限制是由指针的大小强加的。作为进一步限制,在32位操作系统中,进程不能分配超过2GB(总计)。
所以,我建议您需要切换到64位进程来解决问题。