2012-01-19 10 views
3

私は、1MBのメモリを占有するオブジェクト(すなわち、画像)を持っています。 私はこのイメージを変更する関数に渡します。 このイメージを参照で関数に渡すと、1MB全体がコピーされるか、メモリ内のその場所だけがコピーされますか?参照渡しのメモリ使用量ですか?

+3

用語自体には正確に何が言われていますか。 – harold

+2

Cには参照がありません - したがって、私はCタグを削除しました。 C++には参照があります。 –

答えて

6

参照渡しは、オブジェクトへのエイリアスを作成します。使用される唯一のメモリは、エイリアスを保持するために割り当てられたスタック領域です。

+0

「エイリアス」は、偽装されたポインタ以外の何かですか? (参照の背後にあるオブジェクトにアクセスするためにポインタ逆参照記法を使用する必要がないということができます) –

+0

はい。基本的にはconstポインタです – rerun

+1

@JonathanLefflerはい、ポインタではなく*何も*できません。 –

2

オブジェクトの参照先がスタックに渡されます。

これはわかりましたが、これはC++にのみ当てはまります。 Cでは、あなたは常に価値を渡します。ポインタの位置を渡すことで、参照渡しを模倣することができます(誤っていなければ、C++の参照はどうにか動作します)。

9

ポインタは単なるポインタではありません。リファレンスは単なる見た目の良い構文のポインタであるため、子供を怖がらせることはありません。

+2

子供を怖がらせるために+1 ...彼らはそれに値すると思う;) –

2

参照渡し時にオブジェクトをコピーせず、オブジェクトへの参照のみをコピーします。それは参照渡しの全体のポイントです。

1

画像オブジェクトへの参照が、画像全体ではなく関数に送信されます。

関連する問題