Как выделить больше, чем MaxInteger байтов памяти в C #

Я хочу выделить больше, чем MaxInteger байтов памяти.

Marshall.AllocHGlobal () ожидает целое число - поэтому я не могу использовать это. Есть ли другой способ?

Обновить

Я изменил платформу на x64, а затем запустил код ниже.

myp, кажется, имеет правильную длину: около 3.0G. Но упорно «буфер» исчерпан на 2.1g.

Есть идеи почему?

    var fileStream = new FileStream(
          "C:\\big.BC2",
          FileMode.Open,
          FileAccess.Read,
          FileShare.Read,
          16 * 1024,
          FileOptions.SequentialScan);
    Int64 length = fileStream.Length;
    Console.WriteLine(length);
    Console.WriteLine(Int64.MaxValue);
    IntPtr myp = new IntPtr(length);
    //IntPtr buffer = Marshal.AllocHGlobal(myp);
    IntPtr buffer = VirtualAllocEx(
        Process.GetCurrentProcess().Handle,
        IntPtr.Zero,
        new IntPtr(length),
        AllocationType.Commit | AllocationType.Reserve,
        MemoryProtection.ReadWrite);
    unsafe
    {
        byte* pBytes = (byte*)myp.ToPointer();
        var memoryStream = new UnmanagedMemoryStream(pBytes, (long)length, (long)length, FileAccess.ReadWrite);
        fileStream.CopyTo(memoryStream);

Ответы на вопрос(6)

Ваш ответ на вопрос