我正在運行一個簡單的 C++ 程式來了解動態分配的記憶體(malloc
、realloc
和free
)。
這是我的程式碼片段:
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。
我的計算哪裡出錯了?