• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. Linux C程序存儲空間的邏輯布局

        時間:2024-07-12 21:47:40 Linux認證 我要投稿
        • 相關推薦

        關于Linux C程序存儲空間的邏輯布局

          Linux C程序存儲空間的邏輯布局是怎么樣的?為了方便大家,下面YJBYS小編為大家整理了關于Linux C程序存儲空間的邏輯布局的文章,希望對你有所幫助。

          一、APUE上指出了 Linux C程序存儲空間的邏輯布局,對于 X86上的Linux

          正文段從 0x08048000單元開始

          棧底則在 0xC0000000之下開始 (棧從高地址向低地址生長)

          圖如下:

          二、例程

          實現一個函數f(),不用指針,實現在函數內修改傳入參數的值。

          #include "stdio.h"

          #include "sys/types.h"

          void f1(u_int32_t a)

          {

          printf("%p\n", &a);

          u_int8_t *ap = (u_int8_t *)&a;

          while(++ap)

          {

          printf("%p\n", ap);

          if( *ap == a)

          {

          *ap = 7;

          break;

          }

          }

          }

          main()

          {

          u_int32_t i = 123;

          printf("%p\n", &i);

          f1(i);

          printf("%d\n", i);

          }

          運行結果

          /* * * result * * */

          /*

          BTC:/home/leon/test # ./a.out

          0xbf905300

          0xbf9052e0

          0xbf9052e1

          0xbf9052e2

          0xbf9052e3

          0xbf9052e4

          0xbf9052e5

          0xbf9052e6

          0xbf9052e7

          0xbf9052e8

          0xbf9052e9

          0xbf9052ea

          0xbf9052eb

          0xbf9052ec

          0xbf9052ed

          0xbf9052ee

          0xbf9052ef

          0xbf9052f0

          0xbf9052f1

          0xbf9052f2

          0xbf9052f3

          0xbf9052f4

          0xbf9052f5

          0xbf9052f6

          0xbf9052f7

          0xbf9052f8

          0xbf9052f9

          0xbf9052fa

          0xbf9052fb

          0xbf9052fc

          0xbf9052fd

          0xbf9052fe

          0xbf9052ff

          0xbf905300

          7

          */

          從結果可以清晰的看到:

          1 進入函數f1()后,棧“向下”生長了。

          2 通過直接訪問棧內容,修改了棧內的值。

          注:這種操作相當不安全,因為不能保證棧內沒有其它相同的值。

        《&.doc》
        将本文的Word文档下载到电脑,方便收藏和打印
        推荐度:
        点击下载文档

        【Linux C程序存儲空間的邏輯布局】相關文章:

        Linux下程序的Profile工具09-23

        C語言程序的結構10-17

        最簡單的Linux驅動程序09-09

        java程序中如何調用linux命令08-27

        C語言程序設計學習技巧08-02

        計算機C語言程序設計的介紹09-02

        2024年Linux認證考試要點:shell程序控制結構語句09-20

        學習二級c語言程序設計的方法09-09

        Linux認證概念10-29

        Linux認證優勢06-10

        在线咨询
        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 伊人久久大香线蕉综合不卡 | 亚洲欧美日韩性爱一区精品 | 亚洲中文字幕精品乱码 | 亚洲第一高清尤物在线播放 | 一区二区三区四区国产精品视频 | 天堂网亚洲综合在线 |

            關于Linux C程序存儲空間的邏輯布局

              Linux C程序存儲空間的邏輯布局是怎么樣的?為了方便大家,下面YJBYS小編為大家整理了關于Linux C程序存儲空間的邏輯布局的文章,希望對你有所幫助。

              一、APUE上指出了 Linux C程序存儲空間的邏輯布局,對于 X86上的Linux

              正文段從 0x08048000單元開始

              棧底則在 0xC0000000之下開始 (棧從高地址向低地址生長)

              圖如下:

              二、例程

              實現一個函數f(),不用指針,實現在函數內修改傳入參數的值。

              #include "stdio.h"

              #include "sys/types.h"

              void f1(u_int32_t a)

              {

              printf("%p\n", &a);

              u_int8_t *ap = (u_int8_t *)&a;

              while(++ap)

              {

              printf("%p\n", ap);

              if( *ap == a)

              {

              *ap = 7;

              break;

              }

              }

              }

              main()

              {

              u_int32_t i = 123;

              printf("%p\n", &i);

              f1(i);

              printf("%d\n", i);

              }

              運行結果

              /* * * result * * */

              /*

              BTC:/home/leon/test # ./a.out

              0xbf905300

              0xbf9052e0

              0xbf9052e1

              0xbf9052e2

              0xbf9052e3

              0xbf9052e4

              0xbf9052e5

              0xbf9052e6

              0xbf9052e7

              0xbf9052e8

              0xbf9052e9

              0xbf9052ea

              0xbf9052eb

              0xbf9052ec

              0xbf9052ed

              0xbf9052ee

              0xbf9052ef

              0xbf9052f0

              0xbf9052f1

              0xbf9052f2

              0xbf9052f3

              0xbf9052f4

              0xbf9052f5

              0xbf9052f6

              0xbf9052f7

              0xbf9052f8

              0xbf9052f9

              0xbf9052fa

              0xbf9052fb

              0xbf9052fc

              0xbf9052fd

              0xbf9052fe

              0xbf9052ff

              0xbf905300

              7

              */

              從結果可以清晰的看到:

              1 進入函數f1()后,棧“向下”生長了。

              2 通過直接訪問棧內容,修改了棧內的值。

              注:這種操作相當不安全,因為不能保證棧內沒有其它相同的值。