C では、参照は別の変数のアドレスを参照する変数です。メモリ割り当てを調べる場合、他のデータ型と比較して参照が占めるスペースについて疑問が生じます。
次のコード スニペットを考えてみましょう。
int i = 42; int& j = i; int k = 44;
予想どおり、変数 i と k がそれぞれ占有します。スタック上に 4 バイト。ただし、j はメモリ内にスペースを占有しません。これは、参照自体が値を格納しないためです。これは参照する変数のアドレスにバインドするだけで、事実上エイリアスとして機能します。
では、関数の引数として渡された場合、参照はどこにスペースを占めるのでしょうか?
参照が渡されると、コンパイラは関数のスタック上の一時的な場所を割り当てます。この場所には参照される変数のアドレスが保存され、関数がその変数に直接アクセスできるようになります。この例では、 j が関数に渡されると、関数のスタックは変数 i のアドレスを保持します。
参照の配列に関して、C 標準ではその作成を明示的に禁止しています。
int&[] arr = new int&[SIZE]; // compiler error! array of references is illegal
これは、割り当て解除されたメモリを指す可能性があるダングリング参照のリスクによるものです。配列参照を禁止することで、C はメモリの安全性を確保します。
以上がC 参照はメモリ割り当てにどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。