C 参照のメモリ フットプリントの分析
変数のメモリ アドレスを保持するポインタとは異なり、C 参照は、変数への直接のエイリアスを提供します。別の変数。これにより、参照のメモリ フットプリントに関する疑問が生じます。
メモリ レイアウトを理解する
次の例を考えてみましょう。
int i = 42; int& j = i; int k = 44;
while i と k が占有しているスタック上にそれぞれ 4 バイトあるため、j はメモリを消費しないようです。これは、j が単に i のエイリアスであり、同じメモリ位置を共有しているためです。
関数の引数としての参照
関数の引数として渡された場合でも、参照は参照されません。呼び出しスタック上のスペースを占有しません。代わりに、関数スタックは参照される変数自体のアドレスを受け取り、大きなオブジェクトを効率的に渡すことができます。
参照用のメモリ割り当てのアドレス指定
ただし、コンパイラはこれを行います。関数内でローカル参照を定義するときや、メンバー参照を持つクラスを作成するときなど、特定の状況で参照用にスタック上にスペースを予約します。
参照の制限
C標準では配列と参照の参照が禁止されています。参照の配列は、ダングリング参照 (つまり、無効なメモリを指す参照) の可能性があるため許可されません。さらに、参照自体が必要な間接参照をすでに提供しているため、参照への参照は冗長になります。
以上がC 参照は実際にメモリを消費しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。