Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Marshallas(UnmanagedType.ByValArray,SizeConst大小限制)_C#_C++_Pinvoke - Fatal编程技术网

C# Marshallas(UnmanagedType.ByValArray,SizeConst大小限制)

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的另

有人知道 Marshallas(UnmanagedType.ByValArray,SizeConst

SizeCount当do marsheling有大小限制时。 我看到,如果大小较大,那么100000,则marsheling函数调用不起作用,当我放入10000时,函数起作用


有人知道为什么吗?

正如汉斯·帕桑所说,有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。