アンマネージ コードとメモリ管理の複雑さを幸いなことに無知な人のために、この文を翻訳してくれる親切な人はいますか?
このバッファーのストレージは、サイズが 64 KB のプロセスの共有ヒープから割り当てられます。バッファーの最大サイズは、ヒープの使用状況によって異なります。
WriteConsoleなどの数十の MSDN ページに存在しますが、そのような配列が爆発する前に許可される最大サイズを計算する API を見つけることができません。経験的に、61 から 62.5 KB の間のどこかにあることがわかります (64 、63、62 などDllImport
の設定を停止するまでSetLastError
)。GetTotalHeapSize
(Windows のバージョン、プラットフォーム アーキテクチャ、デフォルトなどに依存しない const 64KB でない場合) などのようなものはありGetCurrentHeapInUse
ますか? それと他の P/Invoked メソッドに渡すことができる最大バイト数を取得するにはどうすればよいですか?