搭載されている RAM の容量を計算するにはどうすればよいですか?

搭載されている RAM の容量を計算するにはどうすればよいですか?

動的に割り当てられたメモリ( malloc、 )について学習するために、簡単な C++ プログラムを実行しています。reallocfree

私のコードの一部を以下に示します。

void *p = malloc(10); // Allocates 10 bytes in memory; `p` is a pointer to the first byte.

cout << "The value of the pointer p is:      " << p << endl;

出力は次のようになります:

The value of the pointer p is: 0x7fbf36c00080

16 進数は によって指されるメモリ位置でありp、この割り当ての最初のメモリ位置であることはわかっています。

自分が持っている RAM の容量を大まかに計算しようとするとき、16 進数の桁数 (12 桁) を確認し、その桁数を 16 で累乗しました。

16^12 はおよそ 2.8x10^14 に等しく、各メモリ位置には 1 バイトが格納されるため、8 GB あることはわかっていても、約 280 テラバイトの RAM があることになります。

私の計算はどこで間違えたのでしょうか?

答え1

あなたは次の概念を学ぶべきです 仮想メモリ物理メモリがプロセスのアドレス空間にマップされることを理解します。

64ビットプロセスが2 64 -1までのポインタを持つ可能性があるという事実は、このメモリのすべてが存在することを意味するものではありません。ポインタは メモリセグメント コンピュータ内のどこかの物理メモリにマップされます。

実際にどれだけのメモリがあるかを知っているのはオペレーティング システムだけなので、その量を取得するにはオペレーティング システムの API を使用する必要があります。

私の最初の Wikipedia リンクに示されているように:

ここに画像の説明を入力してください

関連情報