C# gcallowverylargeobjects未解决C中的尺寸限制#

C# gcallowverylargeobjects未解决C中的尺寸限制#,c#,arrays,dimensions,gcallowverylargeobjects,C#,Arrays,Dimensions,Gcallowverylargeobjects,在我的C代码中,我需要包含一个13805*55223大小的矩阵;我相信它没那么大 为了克服RAM限制,我使用了gcAllowVeryLargeObjects,并且我还选择了32位系统 做了所有这些,我仍然面临“数组维度超出支持范围”错误 我非常感谢您为处理此问题提供的帮助。如果以下程序在您的系统上运行,请尝试。 它创建一个大小为13805*55223的一维整数数组。 对于这些阵列大小,保留了约3GB的内存,在我的系统上运行良好 program.cs: using System; namespa

在我的C代码中,我需要包含一个13805*55223大小的矩阵;我相信它没那么大

为了克服RAM限制,我使用了gcAllowVeryLargeObjects,并且我还选择了32位系统

做了所有这些,我仍然面临“数组维度超出支持范围”错误


我非常感谢您为处理此问题提供的帮助。

如果以下程序在您的系统上运行,请尝试。 它创建一个大小为13805*55223的一维整数数组。 对于这些阵列大小,保留了约3GB的内存,在我的系统上运行良好

program.cs:

using System;

namespace arrtest
{
    class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("Is64BitProcess :"+  Environment.Is64BitProcess);
            int [] arr = new int[13805*55223];
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
    }
}
app.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
    </startup>
    <runtime>
        <gcAllowVeryLargeObjects enabled="true" />
    </runtime>
</configuration>


你能给我们看看你的代码吗
13'805*55'223=762'353'515
所以如果你有足够多的int值,那么你已经使用了~3GB的内存…你确定你的应用程序真的是以64位运行吗?试着看着你做错了什么,但这需要一个通灵师来猜出它可能是什么。只是不要使用锯齿状数组。它不仅避免了限制,而且速度更快。代码很简单,比如:double[,]a=newdouble[138055223];谢谢你,托尼鲁什!我现在正按照你的建议处理这个错误。唯一的变化是我在一个单独的app.config中有“gcAllowVeryLargeObjects”,但现在在一个app.config中有了所有!我不确定这是否是我的问题的原因!如果使用double(64位值)而不是int(32位值),则需要双倍的内存量(~6GB)。因此,至少需要8GB的主内存,或者更适合使用16GB主内存的系统。我无法在8GB系统上运行使用6GB内存的程序,因为我只有5GB可用内存。