我正在试图提取计算机的实际内存,并想知道为什么
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前缀。所以当它说“8130064kb”时,意味着8130064KiB,或者8325185536字节。

关于c - C中的内存计算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33131736/

10-09 00:56