官术网_书友最值得收藏!

1.3.2 學會調試時查看內存中的內容

在調試程序時學會查看內存中的內容對于深入掌握C/C++語言編程益處巨大,下面是兩行演示代碼,按F9鍵把斷點設置在printf行。

     char aaa[1000] = "safasdfa\0def";
     printf(aaa);

按F5鍵執行整個程序,使程序停在printf行上,我們此時就處于調試程序狀態,如圖1.13所示。

圖1.13 處于調試程序狀態

在這種狀態下,按快捷鍵Alt+6或執行菜單命令“調試”→“窗口”→“內存”→“內存1”,在整個Visual Studio 2019界面的下方就打開了內存查看窗口,如圖1.14所示。

圖1.14 查看內存中的內容

只需要在“地址”編輯框中輸入地址符&,后面跟要查看的變量名,然后按回車鍵(如這里輸入&aaa并按回車鍵),就可以查看該變量的地址所代表的內存中的內容。當然,在如圖1.13所示的第78行,雙擊aaa這個變量名,直接拖動至“地址”編輯框中并按回車鍵,也能達到查看aaa變量所代表的內存中內容的目的,如圖1.15所示。

圖1.15 變量aaa在內存中的內容

如圖1.15所示,“地址”編輯框中顯示的0x00D3F288是變量aaa所代表的內存地址。往下看,分成3部分,左側部分顯示內存地址,為變量aaa的地址以及附近的內存地址;中間部分顯示的是內存地址中保存的十六進制數字內容(內存中保存的數據都是二進制數據,為了方便觀察,Visual Studio 2019中把這些二進制數據以十六進制形式顯示出來,4位二進制數字顯示為一位十六進制數字);右側部分顯示的是內存中的十六進制數字所代表的一些字符,有些可顯示字符會顯示出來,對于不可顯示的字符就用“.”代替。

將程序代碼中的safasdfa\0def與在內存中的內容進行比較,可以看到,\0這個轉義字符在內存中顯示的十六進制數字為00,a這個字符在內存中顯示的十六進制數字為61,十六進制的61正好是十進制的97,而十進制的97正好就是字符a的ASCII碼,所以在內存中存放一個字符時,存放的其實就是該字符的ASCII碼。

主站蜘蛛池模板: 长春市| 平塘县| 景泰县| 惠安县| 饶河县| 安国市| 扎兰屯市| 伊吾县| 科尔| 蓬安县| 杨浦区| 衢州市| 崇阳县| 交口县| 湘潭市| 安新县| 恩平市| 上思县| 商丘市| 吉首市| 岳普湖县| 许昌县| 怀柔区| 吉林市| 怀来县| 慈利县| 绥棱县| 定兴县| 阳春市| 莱西市| 涟水县| 尼木县| 石狮市| 怀远县| 凤冈县| 金堂县| 宁远县| 沁水县| 金塔县| 南江县| 太仓市|