【VS C++ 2010】查看内存的方法详解
1 示例代碼
對(duì)于以下代碼:
int main() {int a = 100010001000;int b = 100;cout << "a = " << a << " " << &a << endl;cout << "b = " << b << " " << &b << endl;system("pause");return 0; }輸出結(jié)果為:
 
2 設(shè)置斷點(diǎn)調(diào)試
下面我們使用斷點(diǎn)調(diào)試技術(shù),在結(jié)束前打上斷點(diǎn),以便于我們查看內(nèi)存
- 按F9打上斷點(diǎn)
- 再按F5進(jìn)行調(diào)試
- 再按回車(chē)
得到以下結(jié)果
 
3.1 注意事項(xiàng)
打了斷點(diǎn)的含義是:該行不會(huì)被執(zhí)行,在其之前的會(huì)被執(zhí)行
對(duì)于上圖,13行不會(huì)被執(zhí)行,13行(不包含)之前的會(huì)被執(zhí)行。
3 查看內(nèi)存
然后做如下操作,以查看內(nèi)存:
 
 設(shè)置字節(jié)顯示情況,對(duì)于int來(lái)說(shuō),這里是4個(gè)字節(jié)的,選擇4,觀察可以得到:地址的連續(xù)性也是不斷+4的
 
 這里涉及到一個(gè)引申的知識(shí)點(diǎn),重點(diǎn)強(qiáng)調(diào)一下
4 內(nèi)存查看方式分析
我們觀察到對(duì)于int a = 100;在內(nèi)存上顯示是這樣的
 
 它采用十六進(jìn)制來(lái)顯示,這是為了方便人類(lèi)查看,當(dāng)然,十六進(jìn)制的發(fā)明還有很多原因和應(yīng)用,這里不再擴(kuò)展。
每兩個(gè)十六進(jìn)制位,就是一個(gè)字節(jié),因此上面是兩兩顯示的,但是值得注意的是,這種四字節(jié)查看方式,實(shí)際上,00 00 00的地址只是隱藏了而已,讓我們使用單字節(jié)查看方式,你就瞬間明白了
 
 
 事實(shí)上,單字節(jié)的查看方式,更加符合內(nèi)存的存儲(chǔ)單元的實(shí)際情況。
這里要尤為注意
- 地址越大,權(quán)重越高,也就是下面的是高字節(jié),上面的是低字節(jié)
5 建立關(guān)聯(lián):匯編語(yǔ)言
我們來(lái)回看一下**《匯編語(yǔ)言》**中的內(nèi)存情況,進(jìn)一步闡述。
5.1 基本單位為字節(jié)的情況
 一個(gè)存儲(chǔ)單元,對(duì)應(yīng)8個(gè)二進(jìn)制位,2個(gè)十六進(jìn)制位
 存儲(chǔ)單元的編號(hào),也就是內(nèi)存地址
5.2 基本單位為二進(jìn)制位的情況
甚至,對(duì)于二進(jìn)制位的描述,也是自上而下權(quán)重升高的
 
 不過(guò)值得說(shuō)明的是,這只是一種通用的習(xí)慣,并不是強(qiáng)制性的,與實(shí)際硬件的實(shí)現(xiàn)方式也關(guān)系不大。
6 擴(kuò)展閱讀
【擴(kuò)展材料】
- 大端序與小端序1
- 大端序與小端序2
在此鏈接我再補(bǔ)充一點(diǎn):我們常用的,比如十進(jìn)制的8,表示為0000_1000,這就是小端序
按照標(biāo)準(zhǔn),小端序:數(shù)據(jù)的高位字節(jié)存放在地址的高端 低位字節(jié)存放在地址低端
這一點(diǎn)也印證了上述第五節(jié)的觀點(diǎn),高位地址的權(quán)重更大
| ↓ | 0x0015F741 | AB | 
| ↓ | 0x0015F742 | B8 | 
| ↓ | 0x0015F743 | 9A | 
| ↓ | 0x0015F744 | 10 | 
| ↓ | 0x0015F745 | 22 | 
| ↓ | 0x0015F746 | FB | 
| 高地址 | 0x0015F747 | 00 | 
7 疑問(wèn)
問(wèn)題1:在地址0x0015F741中最前面的0x是什么含義?**
在C/C++中,0x或0X代表十六進(jìn)制的前綴,這也就解釋了為什么后面的用十六進(jìn)制表示的地址。
在java7以后,有以下前綴,來(lái)代表不同的進(jìn)位計(jì)數(shù)制(以下的0中間帶圓點(diǎn),類(lèi)似于扁的⊙)
- 二進(jìn)制:0b或者0B
- 八進(jìn)制:0(難區(qū)分,不常用)
- 十六進(jìn)制: 0x或0X
- 十進(jìn)制:不寫(xiě)前綴
7.1 擴(kuò)展:進(jìn)位計(jì)數(shù)制的前綴和后綴
在Verilog和數(shù)字邏輯中,十六進(jìn)制使用h或者H來(lái)表示
十六進(jìn)制的表示有
- 前綴: 0x或0X
- 后綴: h或H
具體使用h還是0x,取決于使用環(huán)境
同理,二進(jìn)制和八進(jìn)制也有前綴和后綴
- 二進(jìn)制 - 前綴:0b或0B
- 后綴:b或B
 
- 八進(jìn)制 【不常用】 - 0
- o或O
 
對(duì)于十進(jìn)制
- 沒(méi)有前綴,不寫(xiě)前綴就是的十進(jìn)制
- 后綴:d或D
總結(jié)
以上是生活随笔為你收集整理的【VS C++ 2010】查看内存的方法详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: 井冈山剧情介绍
- 下一篇: 英雄联盟现在锐雯打野怎么出装?
