• 02_brk/sbrk


      1 #include<stdio.h>
      2 #include<unistd.h>
      3 main()
      4 {
      5     //situation 1
      6     //int *p = sbrk(4); // Here we allocate 1024(decides to the system) bytes of memory and move(not allocate) 4 bytes forward and then return.
      7     //*p = 8888;
      8     //printf("%d ",*p);
      9
     10
     11     //situation 2
     12     //int *p = sbrk(0);//Segmentation fault(core dumped)
     13     //*p = 8888;
     14     //printf("%d ",*p);
     15
     16
     17     //situation 3
     18     //int *p = sbrk(0);
     19     //brk(p+1);
     20     //*p = 8888;
     21     //printf("%d ",*p);
     22
     23     //situation 4
     24     //int *p = sbrk(4);
     25     //*(p+20) = 100;// You will not get a core dumped here ,but this use is illegal and you may get an unpredictable error.
     26
     27     //situation 5
     28     //int *p = sbrk(0);
     29     //brk(p+4); // Here we
     30     //printf("%d ",*(p+20)); //0
     31     //*(p+20) = 100;
     32     //printf("%d ",*(p+20)); //100
     33     //*(p+1023) = 100;
     34     //*(p+1024) = 100; You will get a core dumped
     35
     36     /*
     37     int *p1 = sbrk(4); //Allocate and move
     38     int *p2 = sbrk(4); //move
     39     int *p3 = sbrk(4); //move
     40     int *p4 = sbrk(4); //move
     41     int *p5 = sbrk(4); //move
     42     int *p6 = sbrk(4); //move
     43     int *p7 = sbrk(0); //move
     44     int *p8 = sbrk(0); //move
     45     brk(p8-1);
     46
     47     printf("%p ",p1);
     48     printf("%p ",p2);
     49     printf("%p ",p3);
     50     printf("%p ",p4);
     51     printf("%p ",p5);
     52     printf("%p ",p6);
     53     printf("%p ",p7);
     54     printf("%p ",p8);
     55
     56     *p6 = 8888;
     57     *p7 = 9999;
     58     *p8 = 10000;
     59     printf("%d,%d,%d ",*p6,*p7,*p8);*/
     60
     61
     62
     63     int *p = sbrk(0); //Allocate and return a point(the value is null)
     64     printf("%p ",p);
     65     brk(p+4);//don't move
     66     printf("%p ",p);
     67     brk(p+4);//don't move
     68     printf("%p ",p);
     69     brk(p+4);//don't move
     70     printf("%p ",p);
     71     brk(p);//don't move
     72     printf("%p ",p);
     73
     74
     75 }

  • 相关阅读:
    Linux下查看文件和文件夹大小
    ADB Usage Complete / ADB 用法大全
    Android adb你真的会用吗?
    数组方法-map方法
    数组方法-forEach方法
    js-深入浅出之闭包
    js-作用域-变量申明提升
    递归思想及几个经典题目
    js中eval 详解
    arguments对象 的使用方法
  • 原文地址:https://www.cnblogs.com/liujun5319/p/9625418.html
Copyright © 2020-2023  润新知