-
使用調(diào)試功能 gcc -g
gdb ---> 斷點(diǎn)調(diào)試,單點(diǎn)調(diào)試
gcc -g 文件名.c -o 文件名.out ---> 使用gdb編譯
gbd ./文件名 ---> 開(kāi)始執(zhí)行db調(diào)試
l:(list)列出源碼
回車(chē)?yán)^續(xù)執(zhí)行剛剛的命令
start ---> 開(kāi)始執(zhí)行
break n ---> 截取第n行斷點(diǎn)
print或p a ---> 打印輸出變量a
n ---> 跳到下一行繼續(xù)執(zhí)行
s ? ---> step 跳入函數(shù)
bt ---> 查看函數(shù)堆棧
f ---> 切換函數(shù)堆
f 1 ---> 跳轉(zhuǎn)到函數(shù)1
q ---> 退出調(diào)試
查看全部 -
32位bit:內(nèi)存編號(hào)只能編到32個(gè)二進(jìn)制位
操作系統(tǒng):管理內(nèi)存,編號(hào),規(guī)劃。
用戶(hù)內(nèi)存隔離開(kāi)的好處:
操作系統(tǒng)的內(nèi)存不會(huì)被大量占用
避免機(jī)器卡住/卡死/死機(jī)等狀態(tài)
可通過(guò)操作系統(tǒng)把應(yīng)用關(guān)閉
使得操作系統(tǒng)更安全
查看全部 -
棧:先進(jìn)后出,后進(jìn)先出。由高地址向低地址放入,先放入的后出,后放入的先出。
先放入的分配的內(nèi)存大于后放入的。
字節(jié)順序是指占內(nèi)存多于一個(gè)字節(jié)類(lèi)型的數(shù)據(jù)在內(nèi)存中的存放順序,通常有小端、大端兩種字節(jié)順序。小端字節(jié)序指低字節(jié)數(shù)據(jù)存放在內(nèi)存低地址處(由右向左),高字節(jié)數(shù)據(jù)存放在內(nèi)存高地址處;大端字節(jié)序是高字節(jié)數(shù)據(jù)存放在低地址處,低字節(jié)數(shù)據(jù)存放在高地址處(由左向右)。
示例中的Linux棧內(nèi)用的就是小端存儲(chǔ)(as高字節(jié)存放高地址,由上到下)。
查看全部 -
變量只是一個(gè)名稱(chēng),來(lái)表示一個(gè)內(nèi)存的地址的簡(jiǎn)稱(chēng),(變量就是內(nèi)存)
而指針則是將變量(對(duì)于我們)與地址本質(zhì)的轉(zhuǎn)化,
更利于理解。
堆棧段:
1. 為函數(shù)內(nèi)部的局部變量提供存儲(chǔ)空間。
2. 進(jìn)行函數(shù)調(diào)用時(shí),存儲(chǔ)“過(guò)程活動(dòng)記錄”。
3. 用作暫時(shí)存儲(chǔ)區(qū)。如計(jì)算一個(gè)很長(zhǎng)的算術(shù)表達(dá)式時(shí),可以將部分計(jì)算結(jié)果壓入堆棧。
數(shù)據(jù)段(靜態(tài)存儲(chǔ)區(qū)):
包括BSS段(Block Started by Symbol)的數(shù)據(jù)段。BSS段存儲(chǔ)未初始化或初始化為0的全局變量、靜態(tài)變量,具體體現(xiàn)為一個(gè)占位符,并不給該段的數(shù)據(jù)分配空間,只是記錄數(shù)據(jù)所需空間的大小。數(shù)據(jù)段存儲(chǔ)經(jīng)過(guò)初始化的全局和靜態(tài)變量。
查看全部 -
變量只是一個(gè)名稱(chēng),來(lái)表示一個(gè)內(nèi)存的地址的簡(jiǎn)稱(chēng),(變量就是內(nèi)存)
而指針則是將變量(對(duì)于我們)與地址本質(zhì)的轉(zhuǎn)化,
更利于理解。
形象比喻:內(nèi)存是一個(gè)酒店,每個(gè)變量就是房間的門(mén)牌,通過(guò)指針對(duì)門(mén)牌來(lái)找到地址,從而取得里面的東西。
堆棧段:
1. 為函數(shù)內(nèi)部的局部變量提供存儲(chǔ)空間。
2. 進(jìn)行函數(shù)調(diào)用時(shí),存儲(chǔ)“過(guò)程活動(dòng)記錄”。
3. 用作暫時(shí)存儲(chǔ)區(qū)。如計(jì)算一個(gè)很長(zhǎng)的算術(shù)表達(dá)式時(shí),可以將部分計(jì)算結(jié)果壓入堆棧。
數(shù)據(jù)段(靜態(tài)存儲(chǔ)區(qū)):
包括BSS段(Block Started by Symbol)的數(shù)據(jù)段。BSS段存儲(chǔ)未初始化或初始化為0的全局變量、靜態(tài)變量,具體體現(xiàn)為一個(gè)占位符,并不給該段的數(shù)據(jù)分配空間,只是記錄數(shù)據(jù)所需空間的大小。數(shù)據(jù)段存儲(chǔ)經(jīng)過(guò)初始化的全局和靜態(tài)變量。
查看全部 -
變量只是一個(gè)名稱(chēng),來(lái)表示一個(gè)內(nèi)存的地址的簡(jiǎn)稱(chēng),(變量就是內(nèi)存)
而指針則是將變量(對(duì)于我們)與地址本質(zhì)的轉(zhuǎn)化,
更利于理解。
形象比喻:內(nèi)存是一個(gè)酒店,每個(gè)變量就是房間的門(mén)牌,通過(guò)指針對(duì)門(mén)牌來(lái)找到地址,從而取得里面的東西。
堆棧段:
1. 為函數(shù)內(nèi)部的局部變量提供存儲(chǔ)空間。
2. 進(jìn)行函數(shù)調(diào)用時(shí),存儲(chǔ)“過(guò)程活動(dòng)記錄”。
3. 用作暫時(shí)存儲(chǔ)區(qū)。如計(jì)算一個(gè)很長(zhǎng)的算術(shù)表達(dá)式時(shí),可以將部分計(jì)算結(jié)果壓入堆棧。
數(shù)據(jù)段(靜態(tài)存儲(chǔ)區(qū)):
包括BSS段(Block Started by Symbol)的數(shù)據(jù)段。BSS段存儲(chǔ)未初始化或初始化為0的全局變量、靜態(tài)變量,具體體現(xiàn)為一個(gè)占位符,并不給該段的數(shù)據(jù)分配空間,只是記錄數(shù)據(jù)所需空間的大小。數(shù)據(jù)段存儲(chǔ)經(jīng)過(guò)初始化的全局和靜態(tài)變量。
查看全部 -
變量只是一個(gè)名稱(chēng),來(lái)表示一個(gè)內(nèi)存的地址的簡(jiǎn)稱(chēng),(變量就是內(nèi)存)
而指針則是將變量(對(duì)于我們)與地址本質(zhì)的轉(zhuǎn)化,
更利于理解。
形象比喻:內(nèi)存是一個(gè)酒店,每個(gè)變量就是房間的門(mén)牌,通過(guò)指針對(duì)門(mén)牌來(lái)找到地址,從而取得里面的東西。
堆棧段:
1. 為函數(shù)內(nèi)部的局部變量提供存儲(chǔ)空間。
2. 進(jìn)行函數(shù)調(diào)用時(shí),存儲(chǔ)“過(guò)程活動(dòng)記錄”。
3. 用作暫時(shí)存儲(chǔ)區(qū)。如計(jì)算一個(gè)很長(zhǎng)的算術(shù)表達(dá)式時(shí),可以將部分計(jì)算結(jié)果壓入堆棧。
數(shù)據(jù)段(靜態(tài)存儲(chǔ)區(qū)):
包括BSS段(Block Started by Symbol)的數(shù)據(jù)段。BSS段存儲(chǔ)未初始化或初始化為0的全局變量、靜態(tài)變量,具體體現(xiàn)為一個(gè)占位符,并不給該段的數(shù)據(jù)分配空間,只是記錄數(shù)據(jù)所需空間的大小。數(shù)據(jù)段存儲(chǔ)經(jīng)過(guò)初始化的全局和靜態(tài)變量。
查看全部 -
變量只是一個(gè)名稱(chēng),來(lái)表示一個(gè)內(nèi)存的地址的簡(jiǎn)稱(chēng),(變量就是內(nèi)存)
而指針則是將變量(對(duì)于我們)與地址本質(zhì)的轉(zhuǎn)化,
更利于理解。
形象比喻:內(nèi)存是一個(gè)酒店,每個(gè)變量就是房間的門(mén)牌,通過(guò)指針對(duì)門(mén)牌來(lái)找到地址,從而取得里面的東西。
堆棧段:
1. 為函數(shù)內(nèi)部的局部變量提供存儲(chǔ)空間。
2. 進(jìn)行函數(shù)調(diào)用時(shí),存儲(chǔ)“過(guò)程活動(dòng)記錄”。
3. 用作暫時(shí)存儲(chǔ)區(qū)。如計(jì)算一個(gè)很長(zhǎng)的算術(shù)表達(dá)式時(shí),可以將部分計(jì)算結(jié)果壓入堆棧。
數(shù)據(jù)段(靜態(tài)存儲(chǔ)區(qū)):
包括BSS段(Block Started by Symbol)的數(shù)據(jù)段。BSS段存儲(chǔ)未初始化或初始化為0的全局變量、靜態(tài)變量,具體體現(xiàn)為一個(gè)占位符,并不給該段的數(shù)據(jù)分配空間,只是記錄數(shù)據(jù)所需空間的大小。數(shù)據(jù)段存儲(chǔ)經(jīng)過(guò)初始化的全局和靜態(tài)變量。
查看全部 -
*p;指針指向的變量值
?&p;指針自己所在的地址
標(biāo)準(zhǔn)的C語(yǔ)言中,不允許直接對(duì)內(nèi)存地址進(jìn)行操作,只能是對(duì)操作系統(tǒng)已經(jīng)分配給的內(nèi)存空間進(jìn)行操作。(防止用戶(hù)自己操作內(nèi)存地址時(shí)侵吞系統(tǒng)內(nèi)存或者其他程序的內(nèi)存)
指針保存的是什么?指針保存的就是內(nèi)存的地址
查看全部 -
計(jì)算機(jī)是由邏輯電路元件來(lái)組成的
計(jì)算用二進(jìn)制
顯示為十進(jìn)制
編程用十六進(jìn)制
內(nèi)存中最小的單位是字節(jié) 1Byte=8bit
一個(gè)十六進(jìn)制的數(shù)字,就可以表示4位二進(jìn)制數(shù)字
查看全部 -
使用調(diào)試功能 gcc -g
gdb ---> 斷點(diǎn)調(diào)試,單點(diǎn)調(diào)試
gcc -g 文件名.c -o 文件名.out ---> 使用gdb編譯
gbd ./文件名 ---> 開(kāi)始執(zhí)行db調(diào)試
l:(list)列出源碼
回車(chē)?yán)^續(xù)執(zhí)行剛剛的命令
start ---> 開(kāi)始執(zhí)行
break n ---> 截取第n行斷點(diǎn)
print或p a ---> 打印輸出變量a
n ---> 跳到下一行繼續(xù)執(zhí)行
s ? ---> step 跳入函數(shù)
bt ---> 查看函數(shù)堆棧
f ---> 切換函數(shù)堆
f 1 ---> 跳轉(zhuǎn)到函數(shù)1
q ---> 退出調(diào)試
查看全部 -
void change(int *a,int b) ?其中a為指針參數(shù),*+任意參數(shù)或者變量均為指針參數(shù)或者變量 ?在調(diào)用該函數(shù)時(shí)需要在參數(shù)前+& 即: ?change(&a,&b);
變量前加*號(hào)表示加入指針。 在main函數(shù)中引用指針時(shí)是變量前加&號(hào)
int *a=&b; a是指針,把b的地址賦給a,a指向b
&表示取地址符
指針變量不賦初值會(huì)出錯(cuò),temp
查看全部 -
因?yàn)閏pu的地址總線是32位,也就是尋址空間是32位,如果把內(nèi)存地址比作一戶(hù)人家的門(mén)牌號(hào),那么32位的尋址空間可以給2^32戶(hù)人家分配門(mén)牌號(hào),而計(jì)算機(jī)中一個(gè)內(nèi)存單位為1個(gè)字節(jié),故而32位的操作系統(tǒng)只能使用2^32=(2^10)* (2^10)* (2^10)*( 2^2)=4G字節(jié)的內(nèi)存,這樣說(shuō)應(yīng)該很清晰了
查看全部 -
void change(int *a,int b) ?其中a為指針參數(shù),*+任意參數(shù)或者變量均為指針參數(shù)或者變量 ?在調(diào)用該函數(shù)時(shí)需要在參數(shù)前+& 即: ?change(&a,&b);
變量前加*號(hào)表示加入指針。 在main函數(shù)中引用指針時(shí)是變量前加&號(hào)
int *a=&b; a是指針,把b的地址賦給a,a指向b
&取地址符
指針變量不賦初值會(huì)出錯(cuò),temp
查看全部 -
gdb 斷點(diǎn)調(diào)試,單點(diǎn)調(diào)試
gcc -g? 文件名.out -o? ?文件名 .out 使用gdb編譯
gbd ./文件名.out? 執(zhí)行
(gdb) l? 或list? 顯示源代碼
l:(list)列出源碼
回車(chē)?yán)^續(xù)執(zhí)行剛剛的命令
start開(kāi)始執(zhí)行
break n ---> 截取第n行斷點(diǎn)
print或p a 打印輸出a
n 跳到下一行
s 進(jìn)入函數(shù)
bt 查看函數(shù)堆棧
f 切換
f 1 跳轉(zhuǎn)到函數(shù)1
q 退出調(diào)試
查看全部 -
1?指針?數(shù)組?字符串
2?堆內(nèi)存?棧內(nèi)存
3?GDB? 調(diào)試工具
查看全部 -
自由可分配內(nèi)存
查看全部 -
用戶(hù)內(nèi)存隔離開(kāi)的好處
查看全部 -
一個(gè)內(nèi)存的最小存儲(chǔ)單位1個(gè)字節(jié)
查看全部
舉報(bào)