News for hackers. Stuff that matters.
Re:Memory allocation for the curious by kahlonel on Monday September 18, 2017 @01:18PM (#15277696)
Yup that's true on my machine atleast. Ran this:

  #include <stdio.h>
  #include <stdlib.h>

  int main(void)
  {
  	int i = 0;
	for(i=0; i<200000; i+= 1000)
	{
		printf("%d",i);
		fflush(stdout);
		malloc(i);
	}

  return 0;
  }

strace output where it switches from sbrk to mmap:

  write(1, "125000", 6125000)                   = 6
  write(1, "126000", 6126000)                   = 6
  brk(0x1a65000)                          = 0x1a65000
  write(1, "127000", 6127000)                   = 6
  write(1, "128000", 6128000)                   = 6
  brk(0x1aa3000)                          = 0x1aa3000
  write(1, "129000", 6129000)                   = 6
  write(1, "130000", 6130000)                   = 6
  brk(0x1ae2000)                          = 0x1ae2000
  write(1, "131000", 6131000)                   = 6
  write(1, "132000", 6132000)                   = 6
  mmap(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3aa9b04000
  write(1, "133000", 6133000)                   = 6
  mmap(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3aa9ae3000
  write(1, "134000", 6134000)                   = 6
  mmap(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3aa9ac2000

There are no comments on this comment yet.