日期:2014-05-17  浏览次数:21539 次

关于c#中使用Marshal.AllocHGlobal()方法开辟内存,达人请进~~
问题:我想用C#语言中的Marshal.AllocHGlobal()方法开辟一个较大的内存空间(2G左右),看到有的帖子讲说开辟的内存空间大小取决于操作系统,32位操作系统不超过2G,可是问题是,我怎么连1G的空间都开不出来??(机子内存4G)。help~~~

------解决方案--------------------
内存碎片太多,每块都不满1G,虽然碎片加起来可能超过1G了,而且由于程序本身占用的内存也算在2G里,所以要申请1G的连续内存可能有点困难,用
System.Runtime.MemoryFailPoint MFP = new System.Runtime.MemoryFailPoint(1024);
可以测试是不是能得到这么多内存,如果不能就会抛出异常

让.Net 应用程序突破2G的内存访问限制http://www.chinaz.com/Program/.NET/1124463V2008.html