亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Linux C語言指針與內存

難度初級
時長 2小時 5分
學習人數
綜合評分9.60
263人評價 查看評價
9.9 內容實用
9.5 簡潔易懂
9.4 邏輯清晰
  • 對指針變量而言:

    p +=3

    p[3]

    意義相同

    查看全部
    0 采集 收起 來源:指針運算

    2020-02-16

  • gdb命令:

    x/3d? 地址:按照十進制d,連續顯示3個(3)變量的地址(x),默認間隔為4個空格

    查看全部
  • gcc自動優化功能,會在編譯的時候把同一個數據類型的變量放到相鄰,a,b,i都是整型,具體誰前誰后不一定。在這個截圖中顯示:在棧內存里,a,i,b

    http://img1.sycdn.imooc.com//5e48aebb0001c22d04130372.jpg

    查看全部
  • gcc -g ./a.out

    gdb ./a.out

    start

    list

    查看全部
  • 對指針類型的變量,gdb: p *指針變量:

    如果該地址在棧,堆,數據段,則 會打印該變量的值

    如果該地址在代碼段,則會打印該變量所指的代碼

    定義一個函數指針,使用該函數指針(*函數指針)(要傳給函數的變量)

    查看全部
  • 全局變量gloal:在不同函數中使用global,它們用的是同一個global。

    http://img1.sycdn.imooc.com//5e48a74300017d0207530198.jpg

    局部變量count:count地址很小,??臻g的地址都很大,說明靜態變量(局部變量)不在??臻g,實際上常量,全局變量,靜態變量所在的內存都在數據段里,不同函數的變量不管名字是否相同,都在數據段里面占用不同的空間

    http://img1.sycdn.imooc.com//5e48a7790001f61e04130205.jpg

    查看全部
  • f 代碼號:切換函數

    截圖中可以看到count占用的內存空間不同,它們本質不一樣,改變一個函數內的count內容,不會改變另一個count的內容

    查看全部
  • gdb:

    p 變量名:打印該變量內容

    bt:http://img1.sycdn.imooc.com//5e48a606000125d409250180.jpg

    查看全部
  • gdb命令:

    list 會顯示代碼內容

    start 編譯代碼 入口在main(){

    n:執行下一條指令

    按回車:執行上一條指令

    到了另一個函數那一行,按s,進入這個函數里

    按bt,顯示正在執行的函數 函數0,函數1.。。

    最先分配的棧空間地址反而最大

    因為我們不知道有多少函數被調用,或者同一個函數被調用幾次,為了防止占用操作系統的內存空間

    查看全部
  • 函數運行時候產生的變量地址占棧內存空間

    查看全部
  • 64bit中指針類型需要占8個字節

    32bit電腦指針類型占4個字節(一些書中所指)

    查看全部
  • 用戶內存又進行了分隔:棧、自由可分配內存、堆,數據段,代碼段,

    查看全部
    0 采集 收起 來源:內存管理

    2020-02-16

  • 64位內存分隔為=48+16,用戶內存與操作系統內存隔開的好處:

    可以通過操作系統把應用程序關閉,避免機器卡住

    查看全部
    0 采集 收起 來源:內存管理

    2020-02-16

  • 2^30=1G,2^40=1T,

    操作系統會對所有內存進行編號

    編號=唯一的內存字節的地址

    1字節存放8個二進制位的數據

    http://img1.sycdn.imooc.com//5e48893d0001cf2103100553.jpg

    查看全部
    0 采集 收起 來源:內存管理

    2020-02-16

  • ??http://img1.sycdn.imooc.com//5e4887dc00013fe906480394.jpg?2^10=1024=1k,1024*1024=1M,1024*1024*1024=1G,

    查看全部
    0 采集 收起 來源:內存管理

    2020-02-16

舉報

0/150
提交
取消
課程須知
本課程是C語言中級課程,為了更好的學習效果: 1、需要有一定的C語言基礎,如果沒有基礎的同學可以看《C語言入門》這門課。 2、本課程是在Linux環境下講解,需要熟悉一些Linux命令。如果不了解的話可以在《Linux C語言編程基本原理與實踐》這門課程中補充
老師告訴你能學到什么?
1、C語言中的指針是怎么回事 2、Linux下gdb調試工具是怎樣使用的 3、指針與內存有著怎樣的關系 4、數組與字符串之間的聯系

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!