.NET関数Stream.Read()は、パラメーターとしてbyte[]を取ります。代わりにstackallocされたバイト*を渡す方法はありますか?これにより、余分なヒープ割り当てを行う必要がなくなり、ガベージコレクションの時間を節約できます。この関数は短く、繰り返し呼び出されます。
2 に答える
3
いいえ、できません。最初に配列を作成してそこにコピーする必要があります。MSDNフォーラムのこのスレッドも参照してください。
それとは別に、アプリケーションのコンテキストはわかりませんが、静的に割り当てられたバッファを使用できる可能性がありますか?マルチスレッドコンテキストでは、次のようにTLSにバッファを割り当てることができます。
class SomeDataProcessor
{
[ThreadStatic]
static byte[] _Buffer;
}
ただし、初期化子には注意する必要があることに注意してください。こちらもご覧ください
于 2011-06-26T00:36:01.487 に答える
-1
私はあなたができるとは思わないが、あなたが変換を単純化したいのなら。次を使用できます。
System.Runtime.InteropServices.Marshal.Copy
アンマネージアドレス、サイズ、バイトバッファなどを取り込みます
于 2011-06-26T00:18:19.033 に答える