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