2013-03-18 10 views
5

Iは、このコードでcとして参照変数かどうかを疑問に思う:ヒープまたはスタックに参照が格納されていますか?

int a = 5; 
int & c = a; 

がヒープまたはスタックから割り当てられます。 誰も助けることができますか?ありがとう

+1

参照はオブジェクトではありません。 –

+0

これはすべて答える[どのようにC + +の参照は、メモリ上で見えるのですか?](http://stackoverflow.com/a/38310081/6186415) –

答えて

13

リファレンスはちょうどエイリアスであり、実際のストレージが必要かどうかはC++ 11 Standardによって明記されていません。段落C++ 11規格の8.3.2/4毎

参照ストレージ(3.7)が必要か否かを指定されていません。

+0

答えは不明ですか? –

+0

@YasinRazlık:私はむしろ答えは無関係だと言いたいと思います。そして、ほとんどの場合、私はストレージがまったく割り当てられないと考えています。リファレンスは単なるエイリアスであり、ポインタのようなメモリアドレスを保持する変数ではありません。 –

+1

@YasinRazlıkそれは問題ではないという答えです。 – juanchopanza

4

参照は単なるエイリアスであり、特にどこにも配置する必要はありません。標準では、この種の詳細は指定されていないため、参照にストレージがまったく必要ない場合もあります。

2

重要ではありませんが、参照は、ポインタ算術を持たず、nullまたはindeterminate値のオプションを持たない、定数の自動参照解除型定数です。

再定式化された質問に関して、参照の使用方法は、ほとんどがスタックに割り当てられることを意味します。これは、ストレージを省略できないすべての非静的シナリオにあります。それは、使用されていないものを省略した高性能プログラミング言語であるC++です。

0

ほとんどのコンパイラは、参照を制限付きポインタとみなします。

関連する問題