C# Marshallas(UnmanagedType.ByValArray,SizeConst大小限制)
有人知道 Marshallas(UnmanagedType.ByValArray,SizeConst SizeCount当do marsheling有大小限制时。 我看到,如果大小较大,那么100000,则marsheling函数调用不起作用,当我放入10000时,函数起作用C# Marshallas(UnmanagedType.ByValArray,SizeConst大小限制),c#,c++,pinvoke,C#,C++,Pinvoke,有人知道 Marshallas(UnmanagedType.ByValArray,SizeConst SizeCount当do marsheling有大小限制时。 我看到,如果大小较大,那么100000,则marsheling函数调用不起作用,当我放入10000时,函数起作用 有人知道为什么吗?正如汉斯·帕桑所说,有64K的限制,我不知道为什么。 您可以尝试使用Marshal.AllocHGlobal和Marshal.PtrToStructure/Marshal.StructureToPtr的另
有人知道为什么吗?正如汉斯·帕桑所说,有64K的限制,我不知道为什么。
您可以尝试使用Marshal.AllocHGlobal和Marshal.PtrToStructure/Marshal.StructureToPtr的另一种方法。但是,我不知道您是否可以这样处理它;如果不能,您必须逐段写入数据,然后将指向分配块的指针传递给API函数。正如Hans Passant所说,存在64K限制,我不知道原因。
您可以尝试使用Marshal.AllocHGlobal和Marshal.PtrToStructure/Marshal.StructureToPtr的另一种方法。但是,我不知道您是否能够以这种方式处理它;如果不能,您必须逐段写入数据,然后将指向分配块的指针传递给API函数。限制为64KB。不知道为什么,marshaller代码很粗糙。嘿c函数接受数十万个元素的传递值数组的想法非常可笑;人们会认为将这么多数据推入堆栈的程序集调用的数量将是惊人的……尽管假设可以使用repsb/stosb。限制是64KB。不知道为什么,marshaller代码很粗糙。嘿。c函数的想法采用数十万个元素的传递值数组是非常可笑的;有人会认为将这么多数据推入堆栈的程序集调用的数量将是惊人的……尽管可以使用repsb/stosb。