-
對指針變量而言:
p +=3
p[3]
意義相同
查看全部 -
gdb命令:
x/3d? 地址:按照十進制d,連續顯示3個(3)變量的地址(x),默認間隔為4個空格
查看全部 -
gcc自動優化功能,會在編譯的時候把同一個數據類型的變量放到相鄰,a,b,i都是整型,具體誰前誰后不一定。在這個截圖中顯示:在棧內存里,a,i,b
查看全部 -
gcc -g ./a.out
gdb ./a.out
start
list
查看全部 -
對指針類型的變量,gdb: p *指針變量:
如果該地址在棧,堆,數據段,則 會打印該變量的值
如果該地址在代碼段,則會打印該變量所指的代碼
定義一個函數指針,使用該函數指針(*函數指針)(要傳給函數的變量)
查看全部 -
全局變量gloal:在不同函數中使用global,它們用的是同一個global。
局部變量count:count地址很小,??臻g的地址都很大,說明靜態變量(局部變量)不在??臻g,實際上常量,全局變量,靜態變量所在的內存都在數據段里,不同函數的變量不管名字是否相同,都在數據段里面占用不同的空間
查看全部 -
f 代碼號:切換函數
截圖中可以看到count占用的內存空間不同,它們本質不一樣,改變一個函數內的count內容,不會改變另一個count的內容
查看全部 -
gdb:
p 變量名:打印該變量內容
bt:
查看全部 -
gdb命令:
list 會顯示代碼內容
start 編譯代碼 入口在main(){
n:執行下一條指令
按回車:執行上一條指令
到了另一個函數那一行,按s,進入這個函數里
按bt,顯示正在執行的函數 函數0,函數1.。。
最先分配的棧空間地址反而最大
因為我們不知道有多少函數被調用,或者同一個函數被調用幾次,為了防止占用操作系統的內存空間
查看全部 -
函數運行時候產生的變量地址占棧內存空間
查看全部 -
64bit中指針類型需要占8個字節
32bit電腦指針類型占4個字節(一些書中所指)
查看全部 -
用戶內存又進行了分隔:棧、自由可分配內存、堆,數據段,代碼段,
查看全部 -
64位內存分隔為=48+16,用戶內存與操作系統內存隔開的好處:
可以通過操作系統把應用程序關閉,避免機器卡住
查看全部 -
2^30=1G,2^40=1T,
操作系統會對所有內存進行編號
編號=唯一的內存字節的地址
1字節存放8個二進制位的數據
查看全部 -
??
?2^10=1024=1k,1024*1024=1M,1024*1024*1024=1G,
查看全部
舉報