2016-08-26 13 views
-5

私はポインタが少ないメモリを占有し、より効率的だと思ったが、ポインタにsizeof()を使用すると、メモリとして整数の2倍を使用しているという。私はここで何が欠けていますか?ここに私のコードC++ポインタは整数より多くのメモリを占有しますか?

int p = 1; 
    Int a = 1; 
    Int *pointera; 
    pointera= &p; 
    cout << sizeof(pointera) << endl; 
    cout << sizeof(a) << endl; 

だそれは「」4つのバイトを占め、「pointera」は8を占めるポインタTAKアップ少なくない万一言いますか?私が紛失しているもの

+2

あなたは間違っていると思っただけです。 – hobbs

+2

ポインタが整数より少ないメモリを占有するのはなぜですか? –

+0

何ですか?ポインタがより効率的だと言われましたか? –

答えて

0

ポインタにはメモリアドレスが含まれています。ポインタ上のsizeofを呼び出すと、アドレスのサイズが与えられます。 64ビットコンピュータでは、メモリアドレスは8バイトである。

int *pointera = &p; 
sizeof(pointera); 

ここpointera格納pのメモリアドレス。このアドレスは64ビットで8バイトを意味します。

int、double、およびcharのサイズは異なりますが、これらのデータ型のポインタのサイズを計算すると、同じコンピュータで同じサイズになります。

+1

おそらくintのサイズに言及する価値もデータモデルに依存します –

+0

はい、コンパイラによって使用されるデータモデルは基本型のサイズを決定し、ポインタのサイズにも影響します。 – denis

+1

いくつかのシステムでは、異なるものへのポインタに異なるサイズを使用することがあります –

関連する問題