C

时间:2015-10-14 17:18:59

标签: c linux memory

我试图拉动计算机的实际内存,并想知道为什么之间存在差异

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关闭?

1 个答案:

答案 0 :(得分:2)

由于历史原因,报告内存操作系统时使用基于2的幂的单位,即使它们没有为这些单位使用正确的SI前缀。因此,当它显示“8130064 kB”时,它表示8,130,064 KiB或8,325,185,536字节。