c - C中的内存计算

标签 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?

最佳答案

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

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

相关文章:

c++ - 我可以将/dev/sda用作普通的顺序文件吗?

linux - USB驱动器出现在lsusb中,但没有出现在fdisk中

使用CUDA C进行卷积,错误: expression must be a modifiable lvalue

c - 使用指针简单修改C字符串

计算数字、空格和其他字符

Linux:用指定的数据覆盖文件夹中的所有文件?

python - 将C++中的数据映射到内存并以Python读取数据

iphone - 如何使用iPhone的崩溃报告查找问题?

用于跟踪重复项的 python 数据类型

c - C中的结构,它们有效吗?