vi sample.c
以乙個簡單的數值交換為例,引入記憶體
概念。
#include
void
change
(int
*a,int
*b)int
main
(void
)
編譯
#安裝gdb除錯工具
sudo apt-get install gdb
#編譯gcc -g sample.c -o sample.out
#執行gdb
gdb sample.out
·
start
:進入除錯
break
:斷點
l
ist :顯示**
回車鍵
:重複上一條命令
p
rint《變數》
:列印變數
n
ext :下一行
s
tep : 進入函式?
bt
:堆疊狀態
f
:切換堆疊
q
uit :退出
其中高位記憶體是給系統核心用的,程式設計師只用到其下部分。後續知識概要
綠色部分
可自由分配malloc
編譯後的**在
**段
變數的記憶體順序:
按順序
函式的記憶體順序 :
按逆序
靜態變數,全域性變數 都在
資料段
陣列:
指標
與陣列
的記憶體本質指標運算:
p++
,步長為資料型別的長度。p[n]
字元陣列/指標字串:
(gdb) x/6cb 0x7fffffffde03
#連續列印6個位元組的字元
...
char str=
"hello"
;char
*str2 =
"world"
;char str3[10]
;scanf
("%s"
,str)
;//若此時輸入為aaaaaaaaaaaaaaaaaa,
//超過6個字元的部分進入了str3
慕課網 Linux C語言指標與記憶體 學習筆記
include void change int a,int b int main 上述 無法實現a,b數值的交換。改為指標實現 如下 include void change int a,int b int main 3和5可以成功的交換。需要將實參的位址傳到子函式才能改變實參!a,b c語言 int...
linux C語言學習筆記
linux下用c語言解析xml 解析的xml檔案內容 test.xml 第一步 在linux下部署解析xml所有的環境 2 解壓壓縮包 tar zxvf libxml2 2.9.9.tar.gz 進入解壓後的目錄 cd libxml 3 編輯命令 configure 注意 如果configure檔案...
Linux C語言學習筆記1
1 網路配置 虛擬機器 設定 網路介面卡 橋接 適用於網路環境有路由器,可分配多個ip nat 只有乙個ip 2 更新軟體列表 sudo apt get update 如果殘留鎖檔案 刪除方法 sudo rm 鎖檔案路徑 更改為中國伺服器 ubuntu software center edit so...