Я компилирую и запускаю следующий файл c на двух разных компьютерах linux (Arch на ноутбуке Huawei 8 ГБ ОЗУ, Ubuntu на iMa c 2017 32 ГБ ОЗУ).
#include <stdio.h>
#include <sys/resource.h>
long get_mem_usage()
{
struct rusage myusage;
getrusage(RUSAGE_SELF, &myusage);
return myusage.ru_maxrss;
}
int main()
{
printf("usage: %ld\n", get_mem_usage());
return 0;
}
компиляторы: g cc (Ubuntu 9.2.1-9ubuntu2) 9.2.1
g cc (Arch Linux 9.3.0-1) 9.3.0
в Ubuntu , Я последовательно получаю:
usage: 2432
usage: 2432
usage: 2432
На Arch вывод был непоследовательным и намного большим:
usage: 100584
usage: 100964
usage: 100524
Я довольно смущен, почему эти значения отличаются в такой степени между двумя компьютеры / дистрибутивы. Какова причина этого шаблона распределения памяти? Компилятор назначает эти ресурсы памяти? Или ядро определяет распределение памяти?