Home > Back-end >  SBRK with BRK
SBRK with BRK

Time:06-03

Source program is as follows:
#include
#include
#include
#include

Int bss_end;

Int main (int argv, char * * arg c, char * * env)
{
Void * tret;
Char * pmem. Printf (" BSS end: % p \ n ", (char *) (& amp; Bss_end) + 4);
Tret=SBRK (0);
Printf (" % p \ n ", tret);
Tret=SBRK (0);
Printf (" % p \ n ", tret);
If (tret!=(void *) - 1)
{printf (" heap1 start: % p \ n ", tret);
}
If (BRK (tret (char *) - 1)==1)
{printf (" BRK error \ n ");
}
Tret=SBRK (0);
If (tret!=(void *) - 1)
{printf (" heap2 start: % p \ n ", tret);
} pmem=(char *) malloc (32).
If (pmem==NULL)
{perror (malloc "error"); The exit (EXIT_FAILURE);
}
Printf (" pmem: % p \ n ", pmem); Tret=SBRK (0);
If (tret!=(void *) - 1)
{printf (" heap1 end: % p \ n ", tret);
}
If (BRK (tret (char *) - 10)==1)
{printf (" BRK error \ n ");
}
Tret=SBRK (0);
If (tret!=(void *) - 1)
{printf (" heap2 end: % p \ n ", tret);
}
Printf (" % d \ n ", getpid ()); While (1); return 0;
}
Why first allocation page 21 4096 inside, SBRK (0) is at the end of the distribution page,

CodePudding user response:

I hope it can help you: https://blog.csdn.net/it_xiangqiang/category_10581430.html
I hope it can help you: https://blog.csdn.net/it_xiangqiang/category_10768339.html
  • Related