I am compiling and running the following c file on two different linux computers (Arch on Huawei Laptop 8GB RAM, Ubuntu on iMac 2017 32GB RAM).
#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;
}
The compilers are: gcc (Ubuntu 9.2.1-9ubuntu2) 9.2.1
gcc (Arch Linux 9.3.0-1) 9.3.0
On Ubuntu, I consistently get:
usage: 2432
usage: 2432
usage: 2432
On Arch, the output was not consistent and much larger:
usage: 100584
usage: 100964
usage: 100524
I am fairly confused why these values differ to such a degree between the two computers/distros. What is the cause of this memory allocation pattern? Is it the compiler that's assigning those memory resources? Or is it the kernel that decides memory allocation?