0

私の質問は非常に簡単です..

MemoryStream オブジェクトを渡すと、(byte[] の) 内部バッファがメモリに再度割り当てられますか?

問題は、大規模なシステムで問題になる可能性のあるメモリの断片化の場所から来ています。

4

3 に答える 3

4

場合によります。コンストラクターを介して byte[] から MemoryStream を初期化する場合: いいえ。MemoryStream は、既存のバッファー上の単なるウィンドウであるため、サイズ変更を拒否します。

バッファを渡さずに新しい MemoryStream を作成する場合は、メモリ ストリームにバッファを書き込みます。この場合、たまたま同じバイト内容であっても、バッファは無関係です。

編集:明確にするために-私は建設についてのみ言及しています。その後、それを渡すと、いいえ、もちろん複製されません。これはクラスです。参照を 1 つのオブジェクトに渡すだけです。

于 2013-04-24T17:42:26.603 に答える
3

いいえ。オブジェクトを渡すときは、そのオブジェクトへの参照を渡すだけです。あなたはまだMemoryStream同じ内部バッファを参照している同じを参照しています。何も再割り当てされません。

于 2013-04-24T17:44:58.260 に答える
1

C# では、すべての非値型は実際には内部の参照であるため、MemoryStream をメソッドに渡すときは、MemoryStream のコピーではなく、MemoryStream への参照のみを渡す必要があります。

http://msdn.microsoft.com/en-us/library/0f66670z(v=vs.71).aspx#vclrfpassingmethodparameters_referencetypes

于 2013-04-24T17:44:59.530 に答える