2012-02-21 1 views
1

誰もが知っているSizeConstサイズ制限場合 MarshalAs(UnmanagedType.ByValArray、SizeConstMarshalAs(UnmanagedType.ByValArray、

SizeCount marshelingはサイズ制限があります。私が見る を行うときに100000 marsheling関数呼び出し、その後、大きなサイズの場合動作していないと私は10000を入れたときに機能が働いている。

ハンスアンパッサンが言うように?

+0

制限は64KBです。理由は分かりませんが、マーシャルコードは大雑把です。 –

+1

Heh。何十万という要素の値渡しの配列をとっているc関数の考え方はかなり馬鹿げています。多くのデータをスタックにプッシュするためのアセンブリ呼び出しの数は素晴らしいと思います。ただしrepsb/stosbを使用することもできます。 – JerKimball

答えて

1

は、64Kの制限があると私はなぜ知らない理由誰もが知っている。 あなたはいつも別のアプローチを試すことができますマーシャルと一緒にAllocHGlobalおよびMarshal.PtrToStructure/Marshal.StructureToPtr。しかし、あなたがそれをそのように扱うことができるかどうかはわかりません。もしそうでなければ、データを1つずつ書く必要があります。次に、割り当てられたブロックへのポインタをAPI関数に渡します。

関連する問題