如何計算我有多少 RAM?

如何計算我有多少 RAM?

我正在運行一個簡單的 C++ 程式來了解動態分配的記憶體(mallocreallocfree)。

這是我的程式碼片段:

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

我知道十六進制數字是 指向的記憶體位置p,這是此分配的第一個記憶體位置。

當嘗試粗略計算我有多少 RAM 時,我查看了該十六進制數字(12 位)中的位數,併計算 16 的冪。

事實證明,16^12 大致等於 2.8x10^14,並且由於每個內存位置存儲一個字節,這意味著我有大約 280 TB 的 RAM,即使我知道我有 8 GB。

我的計算哪裡出錯了?

答案1

你應該研究這個概念 虛擬記憶體,了解實體記憶體被映射到進程的位址空間。

64 位元進程的指標可能高達 2 64 -1,這一事實並不意味著所有這些記憶體都存在。指針指向一個 記憶體段 它被映射到電腦中某處的物理記憶體。

只有作業系統知道您實際擁有多少內存,因此您需要使用其 API 來檢索該內存量。

正如我的第一個維基百科連結所示:

在此輸入影像描述

相關內容