我如何计算我有多少 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 位进程可能有指向 264-1 的指针,但这并不意味着所有这些内存都存在。指针指向 内存段 它被映射到计算机某处的物理内存。

只有操作系统知道您实际有多少内存,因此您需要使用它的 API 来检索该数量。

正如我的第一个维基百科链接所示:

在此处输入图片描述

相关内容