Arrays vb内存映射的整数文件数组
我试图创建一个整数数组到内存映射文件中,并在C++中读取文件,但我不会在这里问C++部分。MakeMem()的{“缓冲区中没有足够的可用空间。”} 先在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 +
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.NETInteger
的大小为四个字节,您需要使用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.NETInteger
的大小为四个字节,您需要使用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