Arrays vb内存映射的整数文件数组

Arrays vb内存映射的整数文件数组,arrays,vb.net,integer,mapped-memory,Arrays,Vb.net,Integer,Mapped Memory,我试图创建一个整数数组到内存映射文件中,并在C++中读取文件,但我不会在这里问C++部分。MakeMem()的{“缓冲区中没有足够的可用空间。”} 先在VB中测试,从内存中读取数组 Private Sub ReadMem() Try Dim integer3 = New Integer(31) {} MemoryMappedFile.OpenExisting("0MemF").CreateViewAccessor(0, integer3.Length +

我试图创建一个整数数组到内存映射文件中,并在C++中读取文件,但我不会在这里问C++部分。MakeMem()的{“缓冲区中没有足够的可用空间。”}

先在VB中测试,从内存中读取数组

Private Sub ReadMem()
    Try
        Dim integer3 = New Integer(31) {}

        MemoryMappedFile.OpenExisting("0MemF").CreateViewAccessor(0, integer3.Length + 1).ReadArray(Of Integer)(0, integer3, 0, integer3.Length)

                TextBox1.Text = ""
                For i As Integer = 0 To integer3.Length - 1
                    TextBox1.AppendText(CStr(integer3(i)) + " ")
                Next


            End Using
        End Using
    Catch noFile As FileNotFoundException

        TextBox1.Text = "Mem-map not found"
    Catch Ex As Exception

    End Try
End Sub

CreateOrOpen
CreateViewAccessor
WriteArray
引发的异常也是如此吗?在WriteArray(整数的)上引发异常(0,integer2,0,integer2.Length)
CreateOrOpen
的文档说明第二个参数是分配给文件的最大字节大小。假设VB.NET
Integer
的大小为四个字节,您需要使用
integer2.Length*4
而不仅仅是
integer2.Length
。谢谢,它的作用是:CreateOrOpen(“0MemF”,integer2.Length*4+1*4)。CreateViewAccessor(0,integer2.Length*4)显示stacktrace可能也会有一些帮助。由
CreateOrOpen
CreateViewAccessor
WriteArray
引发的异常也是如此。在WriteArray(整数的)上引发异常(0,integer2,0,integer2.Length)
CreateOrOpen
的文档说明,第二个参数是分配给文件的最大字节大小。考虑到VB.NET
Integer
的大小为四个字节,您需要使用
integer2.Length*4
而不仅仅是
integer2.Length
。谢谢,它的作用是:CreateOrOpen(“0MemF”,integer2.Length*4+1*4)。显示堆栈跟踪的CreateViewAccessor(0,integer2.Length*4)可能也有点帮助。
Private Sub ReadMem()
    Try
        Dim integer3 = New Integer(31) {}

        MemoryMappedFile.OpenExisting("0MemF").CreateViewAccessor(0, integer3.Length + 1).ReadArray(Of Integer)(0, integer3, 0, integer3.Length)

                TextBox1.Text = ""
                For i As Integer = 0 To integer3.Length - 1
                    TextBox1.AppendText(CStr(integer3(i)) + " ")
                Next


            End Using
        End Using
    Catch noFile As FileNotFoundException

        TextBox1.Text = "Mem-map not found"
    Catch Ex As Exception

    End Try
End Sub