我正在尝试提取计算机的实际内存,想知道为什么两者之间存在差异
sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGESIZE) 和/proc/meminfo
#include <stdio.h>
#include <unistd.h>
int main(){
unsigned long long ram = (sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGESIZE));
printf("%lli = ram\n", ram);
return 0;
}
输出 = 8325185536
8325185536 字节 = 8.325185536 Gb
User > cat /proc/meminfo
MemTotal: 8130064 kB
8130064kB = 8.130064Gb
减少 0.195121536Gb?
最佳答案
由于历史原因,在报告内存时,操作系统使用基于 2 的幂的单位,即使它们没有为这些单位使用正确的 SI 前缀。所以当它说“8130064 kB”时,它意味着 8,130,064 KiB , 或 8,325,185,536 字节。
关于c - C中的内存计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33131736/