2016-12-04 8 views
0

C++でオブジェクトへの参照を格納するのにどれくらいのメモリが必要ですか? C++(int、double、stringなど)で特定のデータ型への参照を格納する場合と比較して、オブジェクトへの参照を格納するのに異なる量のメモリが必要ですか?オブジェクトへのポインタを格納するためにどれくらいのメモリが必要ですか?それは異なる量のメモリ使用量と比較してオブジェクトへの参照を格納するか?C++でオブジェクトへの参照を格納するのにどれくらいのメモリが必要ですか?

+3

ポインタと同じです。 ***オブジェクトへのポインタを格納するのにどれくらいのメモリが必要でしょうか?***通常32ビットコードでは32ビット、64ビットコードでは64ビットです。 – drescherjm

+0

これは根本的に複数の質問です。そのように私はそれが広すぎるという根拠に基づいてそれを閉じようとしています。トピックの詳細については、[ヘルプセンター](http://stackoverflow.com/help/on-topic)を参照してください。 – MrEricSir

+1

これはややこしいことです。通常、私は 'std :: cout << sizeof(myreference);'と言っていますが、それはうまくいきません。どちらも 'std :: cout << sizeof(char&);'バマーのビットではありません。 – user4581301

答えて

0

ポインタと参照は、コンパイラとまったく同じです。それらはすべてポインターのサイズを占めます。サイズを取得するにはsizeof(void *)を使用してください。

+0

異なるタイプへのポインタのサイズが異なる可能性があります –

+0

@ M.Mポインタは単なる整数のポインタです。私はあなたがどのように異なるサイズのポインタを持つことができないか見ていない。 –

+0

これは実装の詳細ですが、異なる実装が異なる場合があります(しばしば、使用されているハードウェアに応じて)。セグメント化されたアーキテクチャには、さまざまなポインタサイズがありました。 –

2

リファレンスで使用されるストレージは、不特定です。時にはそれは、例えば:Noneになります

void func() 
{ 
    int a; 
    int &b = a; 
    // ... 
} 

bは、任意のストレージを消費しないであろうと思われます。

+1

コンパイラは参照を削除しますが、参照が格納されてもそれはポインタのサイズになります。 –

+0

@ YanZhou私の答えはC++標準に従っています。使用したコンパイラの詳細については、 –

+1

を参照してください。はい、基準が基準に従ってストレージを必要とするかどうかは不明です。私が意味することは、ストレージが必要なときです... –

関連する問題