亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++調(diào)試過程中最麻煩的問題—運(yùn)行時(shí)錯(cuò)誤

2020-05-23 14:26:23
字體:
供稿:網(wǎng)友
在調(diào)試過程中,運(yùn)行時(shí)錯(cuò)誤是最麻煩的問題。因?yàn)榫幾g錯(cuò)誤可以由編譯器檢查出來,而大多數(shù)編譯器對(duì)運(yùn)行時(shí)錯(cuò)誤卻無能為力。查錯(cuò)和糾錯(cuò)的工作完全由用戶自己來完成。

運(yùn)行時(shí)錯(cuò)誤還分為兩種:
一種是由于考慮不周或輸入錯(cuò)誤導(dǎo)致程序異常(Exception),比如數(shù)組越界訪問,除數(shù)為零,堆棧溢出等等。
另一種是由于程序設(shè)計(jì)思路的錯(cuò)誤導(dǎo)致程序異?;螂y以得到預(yù)期的效果。


對(duì)于第一類運(yùn)行時(shí)錯(cuò)誤,我們不需要重新設(shè)計(jì)解決問題的思路,認(rèn)為當(dāng)前算法是可行的、有效的。我們只需要找出輸入的錯(cuò)誤或考慮臨界情況的處理方法即可。對(duì)于第二類運(yùn)行時(shí)錯(cuò)誤,不得不遺憾地說,一切都要從頭再來。

見識(shí)運(yùn)行時(shí)錯(cuò)誤

由于編譯器無法發(fā)現(xiàn)運(yùn)行時(shí)錯(cuò)誤,這些錯(cuò)誤往往是在程序運(yùn)行時(shí)以五花八門的形式表現(xiàn)出來。下面就是典型的幾種因運(yùn)行時(shí)錯(cuò)誤引起的問題:
(1)WindowsXP錯(cuò)誤報(bào)告
C++調(diào)試過程中最麻煩的問題—運(yùn)行時(shí)錯(cuò)誤

(2)內(nèi)存不能為Read/Written
C++調(diào)試過程中最麻煩的問題—運(yùn)行時(shí)錯(cuò)誤

(3)非法操作
C++調(diào)試過程中最麻煩的問題—運(yùn)行時(shí)錯(cuò)誤

(4)Debug錯(cuò)誤
C++調(diào)試過程中最麻煩的問題—運(yùn)行時(shí)錯(cuò)誤

查找錯(cuò)誤點(diǎn)

語法錯(cuò)誤的位置能很快地被編譯器找到,而運(yùn)行時(shí)錯(cuò)誤的位置卻很難被我們發(fā)現(xiàn)。即使我們一條條地檢查語句,也未必能檢查出什么。所以,在這里要介紹一種查找導(dǎo)致運(yùn)行時(shí)錯(cuò)誤的語句的方法。

我們知道,帶有運(yùn)行時(shí)錯(cuò)誤的程序是可以運(yùn)行的。當(dāng)它運(yùn)行到一個(gè)產(chǎn)生錯(cuò)誤的語句時(shí),就提示出錯(cuò)了。根據(jù)這個(gè)特點(diǎn),我們可以用輸出語句來判斷程序的運(yùn)行流程。下面就讓我們來看一段有運(yùn)行時(shí)錯(cuò)誤的程序:(程序11.4)
#include <iostream>
using namespace std;
int main()
{
   char a[5],b[5];
   int alen=0,blen=0;//記錄字符串a(chǎn)和b的長度
   cin >>a >>b;
   for (int i=0;a[i]!='/0' && b[i]!='/0';i++)//計(jì)算字符串的長度
   {
      if (a[i]!='/0')
         alen++;
      if (b[i]!='/0')
         blen++;
   }
   char *c=new char[alen+blen];//申請(qǐng)堆內(nèi)存,存放連接后的字符串
   for (i=0;i<=alen+blen;i++)//把字符串a(chǎn)和b連接復(fù)制到字符串c
   {
      if (i<alen)
         c[i]=a[i];
      else
         c[i]=b[i-alen];
   }
   cout <<c <<endl;
   delete [] c;//釋放堆內(nèi)存
   return 0;
}

運(yùn)行結(jié)果:
OOTTMA
TomatoStudio
udioTomat  葺葺葺葺癅

在程序運(yùn)行結(jié)束之前,提示Debug Error,它屬于一種運(yùn)行時(shí)錯(cuò)誤。而且根據(jù)輸出的一些內(nèi)容,發(fā)現(xiàn)程序也沒有達(dá)到連接字符串的目的。所以我們讓程序輸出更多信息,查找錯(cuò)誤原因。首先在計(jì)算字符串a(chǎn)和b的長度后,輸出他們的長度,即在第一個(gè)for語句后添加一句cout <<"alen=" <<alen <<"blen=" <<blen <<endl;。

運(yùn)行結(jié)果:
OOTTMA
TomatoStudio
alen=4blen=4
udioTomat  葺葺葺葺癅

OOTTMA字符串長為6,TomatoStudio字符串長為12。根據(jù)程序運(yùn)行結(jié)果,我們發(fā)現(xiàn)計(jì)算出的字符串長度有問題。所以我們必須檢查實(shí)現(xiàn)該功能的語句。另外,由字符串長度我們可以想到申請(qǐng)空間是否足夠的問題。發(fā)現(xiàn)數(shù)組的空間只能存放5個(gè)字符,而現(xiàn)在兩個(gè)字符串都已經(jīng)超過這個(gè)限制。于是把數(shù)組空間擴(kuò)大,該作char a[20],b[20];。

運(yùn)行結(jié)果:
OOTTMA
TomatoStudio
alen=6blen=6
OOTTMATomatoS  葺葺癅

發(fā)現(xiàn)字符串a(chǎn)的長度已經(jīng)正確,可是字符串b的長度為什么不對(duì)呢?經(jīng)過多次嘗試,我們發(fā)現(xiàn),正確的字符串長度總是較短的字符串。所以我們想到檢查循環(huán)繼續(xù)的條件是否正確,如果過早地終止循環(huán),就會(huì)導(dǎo)致這種情況。果然,a[i]!='/0' && b[i]!='/0'意味著只要有一個(gè)字符串結(jié)束,那么長度計(jì)算就結(jié)束了,故把&&改成||。

運(yùn)行結(jié)果:
OOTTMA
TomatoStudio
alen=35blen=41
OOTTMA

這么一改,居然兩個(gè)長度全都錯(cuò)了。我們不禁要思考為什么會(huì)這樣了:用一個(gè)for語句來計(jì)算兩個(gè)字符串的長度,當(dāng)循環(huán)變量越過任一個(gè)字符串的結(jié)尾符以后又誤認(rèn)為它沒有結(jié)束,所以輸出的長度遠(yuǎn)遠(yuǎn)長于字符串的實(shí)際長度。我們把計(jì)算字符串長度用兩個(gè)for語句來實(shí)現(xiàn)。即程序被改寫成這樣:
#include <iostream>
using namespace std;
int main()
{
   char a[20],b[20];
   cin >>a >>b;
   for (int alen=0;a[alen]!='/0';alen++);//計(jì)算字符串a(chǎn)的長度
      for (int blen=0;b[blen]!='/0';blen++);//計(jì)算字符串b的長度
         cout <<"alen=" <<alen <<"blen=" <<blen <<endl;
   char *c=new char[alen+blen];
   for (int i=0;i<=alen+blen;i++)
   {
     if (i<alen)
        c[i]=a[i];
      else
        c[i]=b[i-alen];
   }
   cout <<c <<endl;
   delete [] c;
   return 0;
}
運(yùn)行結(jié)果:
OOTTMA
TomatoStudio
alen=6blen=12
OOTTMATomatoStudio

現(xiàn)在兩個(gè)字符串的長度都正確了,輸出的內(nèi)容也實(shí)現(xiàn)了字符串的連接,但是Debug Error仍然存在。繼續(xù)檢查,發(fā)現(xiàn)剩下的語句和申請(qǐng)的堆內(nèi)存空間字符串c有關(guān)了。于是先檢查c是否有越界訪問。根據(jù)c申請(qǐng)的空間大小,發(fā)現(xiàn)for語句中循環(huán)繼續(xù)的條件有錯(cuò)誤,導(dǎo)致越界訪問,把它改成i<alen+blen;。

運(yùn)行結(jié)果:
OOTTMA
TomatoStudio
alen=6blen=12
OOTTMATomatoStudio  @

Debug Error已經(jīng)沒有了,看來造成這個(gè)錯(cuò)誤的原因就是越界了。但是現(xiàn)在輸出的字符串后面有亂碼,可能是結(jié)尾符被忽略了。檢查程序,發(fā)現(xiàn)alen+blen是兩字符串長度,但是沒有考慮結(jié)尾符,所以要給字符串c增加一個(gè)字符的空間。程序改寫成如下:
#include <iostream>
using namespace std;
int main()
{
   char a[20],b[20];
   cin >>a >>b;
   for (int alen=0;a[alen]!='/0';alen++);
      for (int blen=0;b[blen]!='/0';blen++);
         //cout <<"alen=" <<alen <<"blen=" <<blen <<endl;
         char *c=new char[alen+blen+1];
   for (int i=0;i<alen+blen+1;i++)
   {
      if (i<alen)
         c[i]=a[i];
      else
         c[i]=b[i-alen];
   }
   cout <<c <<endl;
   delete [] c;
   return 0;
}

運(yùn)行結(jié)果:
OOTTMA
TomatoStudio
OOTTMATomatoStudio

至此,程序修改完成。在目前的測(cè)試數(shù)據(jù)下,不再出現(xiàn)運(yùn)行時(shí)錯(cuò)誤,并且也能實(shí)現(xiàn)字符串連接的功能。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
日本一区二区网站| 色婷婷av一区二区三| 亚洲午夜未满十八勿入免费观看全集| 国产精品一区二区小说| 免费看欧美一级片| 麻豆精品一区二区av白丝在线| 97在线观看视频免费| 国产情人节一区| 国产一区二区三区在线观看网站| 国产成a人亚洲精v品| 四虎影成人精品a片| 牛牛视频精品一区二区不卡| 爱草tv视频在线观看992| 欧美美女在线直播| 亚洲欧洲综合另类| 欧美日韩亚洲一区在线观看| 香蕉视频在线播放| 中文字幕在线免费看线人| 久久久久久久久久一区二区| theav精尽人亡av| av在线免费电影| 色哟哟网站在线观看| 91无套直看片红桃在线观看| 午夜精品一区二区三区视频免费看| 天堂网av成人| 亚洲综合激情网| 久草青青在线观看| 9l视频自拍蝌蚪9l视频成人| 91亚洲精品视频在线观看| 五月综合激情婷婷六月色窝| www.av在线播放| 超碰97人人射妻| 国产午夜精品一区二区三区嫩草| 国产一级片免费视频| 国产乱子伦视频一区二区三区| 亚洲欧美日韩不卡一区二区三区| 国产精品剧情一区二区三区| 国产女主播一区二区三区| 性欧美亚洲xxxx乳在线观看| 视频二区不卡| 亚洲精品少妇| 欧美99久久| 中文字幕av在线| 99久久婷婷国产综合精品| 亚洲v日韩v综合v精品v| 天天操天天操天天操天天| 91精品婷婷国产综合久久| 亚洲第一区第二区第三区| 欧美亚洲动漫制服丝袜| 18成人在线观看| 99精品欧美一区二区| 日韩**一区毛片| 日韩成人网免费视频| 精品国产免费久久久久久婷婷| 久久久久久综合网天天| 伊人久久久久久久久久久| 免费理论片在线观看播放老| 免费在线黄网| 高清无码一区二区在线观看吞精| 免费看一级毛片| 4438欧美| 亚洲人成77777在线观看网| 深夜av在线| 一区二区三区视频在线观看免费| 欧美+亚洲+精品+三区| 国产黑丝在线观看| 国产女人18毛片| 簧片在线观看| 久久精品日产第一区二区三区高清版| 国产欧美日韩一区| 无码人妻精品一区二区三区66| 在线精品国产成人综合| 中文字幕成人在线观看| 中国黄色录像片| 免费国产在线观看| 一区二区三区不卡视频在线观看| 国产亚洲a∨片在线观看| 国产变态拳头交视频一区二区| 色窝窝无码一区二区三区成人网站| 午夜国产一区二区| 日本成人在线不卡视频| 国产一区二区三区四区五区| 亚洲码无人客一区二区三区| 毛片在线导航| 欧美激情久久久| 国产欧美在线观看一区| 国产精品久久久久永久免费观看| 一个色综合导航| 日本高清不卡一区| 亚洲三级免费电影| 亚洲人体影院| 最近中文字幕免费mv视频多少集| 亚洲第一会所| 91麻豆国产福利精品| 久久精品99无色码中文字幕| 亚洲综合伊人久久大杳蕉| 日韩毛片免费看| 国产精品一区二区三区在线观| 91精品在线一区二区| 成人福利片网站| 国产精品资源站在线| 男男视频在线观看网站| 精品人妻无码一区二区三区| 99a精品视频在线观看| 国产精品久久久久久久久久直播| 国产亚洲精品美女久久| 欧美va亚洲va香蕉在线| 亚洲精华国产精华精华液网站| 欧美三级中文字幕在线观看| 美脚丝袜脚交一区二区| 成人免费精品动漫网站| 国产一区二区三区精品在线观看| 濑亚美莉vs黑人在线观看| 麻豆一二三区精品蜜桃| 日韩av一级大片| 欧美性高跟鞋xxxxhd| 国产精品白丝在线| 波多野结衣中文字幕久久| 国产精品美女| 97精品久久人人爽人人爽| 日日草天天干| 亚欧洲精品在线视频免费观看| 亚洲天堂伊人网| 98精品在线视频| 日本又骚又刺激的视频在线观看| 日韩伦理电影网站| 黄色片网站在线免费观看| xxxxx中文字幕| 日本一区免费| 欧美1区2区3| 精品人妻无码一区二区| 免费成人深夜夜行p站| 久久精品水蜜桃av综合天堂| 国产精品高潮呻吟视频| 国产suv精品一区二区三区| 狠狠操狠狠干视频| 亚洲精品亚洲人成在线观看| 伦理天堂电影| 国产精品毛片久久久久久| 麻豆av一区二区三区久久| 日韩一区二区三区电影| 特大巨黑人吊性xxxxn38| 91在线资源站| 91伊人久久| 亚洲精品成人av久久| 国产精品私人影院| 欧美一卡二卡| 在线电影欧美日韩一区二区私密| 国产精品久久久99| 在线观看制服搞黄视频| 国产精品v日韩精品v在线观看| 日韩欧美另类在线| 91高清视频在线免费观看| 日韩一区二区三区精品视频| 先锋影音av男人站| 日韩新的三级电影| 91精品国产综合久久香蕉最新版| 老司机2019福利精品视频导航| 翔田千里一区二在线观看| 影音先锋国产资源站| 天堂√最新版中文在线| 国产午夜精品久久久久| 国产精品欧美亚洲777777| 日本欧美视频在线观看| 欧美一区二区在线视频观看| 亚洲国产精品美女| 黑丝美女一区二区| 精品剧情在线观看| 中文av一区特黄| 亚洲三级中文字幕| 欧美日韩国产综合视频在线观看| 日日操免费视频| 欧美精品在线一区二区三区| 成人在线免费观看av| 男人操女人的视频在线观看欧美| 成人黄色影片在线| 久久综合久久久| 欧美精品色综合| 最新在线黄色网址| 久久久久国产一区| 3d动漫一区二区三区在线观看| 日韩在线精品视频| 亚洲精品乱码久久久久久久| 捆绑变态av一区二区三区| 成人亚洲欧美激情在线电影| 丁香网亚洲国际| 日韩av电影在线免费播放| 在线观看中文av| 国产性色一区二区| 欧美亚洲一级| 自拍av在线| 亚洲国产成人影院播放| 亚洲精品国产一区二区在线| 日本黄色一区二区三区| 一级片视频在线观看| 国产精品久久中文| 日本高清视频免费观看| 久久久久久久久久久久久久免费看| caoporm免费视频在线| 国产精品调教视频| 国产乱码在线观看| 蜜桃av在线免费观看| 德国一级在线视频| 国产精品欧美精品| 国产情侣小视频| 8848hh四虎| 成人黄网18免费观看的网站| 日本三日本三级少妇三级66| 久久成人在线| 五月天婷婷丁香| 看黄色一级大片| 日韩欧美精品| 欧美最猛性xxxxxhd| 亚洲国产欧美一区二区三区久久| 凹凸成人精品亚洲精品密奴| 97热在线精品视频在线观看| av在线综合网| 亚洲精品国产精品国自产观看浪潮| 亚洲色图 在线视频| 国产精品jvid在线观看蜜臀| 四色成人av永久网址| 伊人久久大香线蕉| 亚洲影视在线播放| 国产又粗又猛又爽又黄91精品| 精品日韩欧美在线| 在线午夜精品自拍| 天堂入口网站| 久久尤物视频| 亚洲欧美色图| 欧美年轻男男videosbes| 国产在线中文字幕| 伊人伊成久久人综合网小说| 日本少妇久久久| 日韩中文字幕亚洲| 国精产品久拍自产在线网站| 天堂网视频在线| 国产在线一区二区三区四区| 午夜天堂在线视频| 日本免费看片网站| 制服.丝袜.亚洲.中文.综合懂| 性xxxxfjsxxxxx欧美| 欧美video巨大粗暴18| 亚洲综合久久av| 野战少妇38p| 男人天堂中文字幕| 99久免费精品视频在线观78| 欧美成人sm免费视频| 国产成人aaa| 伊人久久中文字幕| 精品久久中文字幕久久av| 亚洲欧美日韩国产中文| 国产ts人妖一区二区三区| 韩日一区二区三区| 成人黄色免费电影| 免费污网站在线观看| 综合色婷婷一区二区亚洲欧美国产| 手机免费看av片| 国产又爽又黄又刺激的软件| 日本一区二区三区四区视频| 男人的天堂va| 亚洲乱码日产精品bd| 丰满少妇高潮一区二区| 色综合五月天导航| 国产精品精品一区二区三区午夜版| 大陆成人av片| 亚洲国产经典视频| 在线视频福利| 欧美色123| 成人免费黄色在线| 午夜激情一区二区三区| silk一区二区三区精品视频| 日韩在线观看视频一区二区| 国产精品亚洲综合天堂夜夜| 日韩av大片在线观看| 高清视频一区二区| 中文字幕精品在线播放| 亚洲国产精品专区久久| 在线天堂日本| 国产免费播放一区二区| 久久福利在线| 精品国产乱码一区二区三区| 99国产精品99久久久久久粉嫩| 日韩欧美一区二区三区免费看| 人人干人人爱人人爱| 九九九久久久久久久| 91毛片在线观看| 成人性生交大片免费看视频r| 欧美精品乱码久久久久久按摩| 日韩av地址| 日本在线观看一区二区三区| 综合久久久久| 欧美一区二区在线视频观看| 深夜福利一区二区三区| 欧美激情理论| 亚洲成在人线在线播放| 污视频在线看网站| 97精品视频在线观看自产线路二| 在线中文字幕日韩| 欧美裸体一区二区三区| 国产性一乱一性一伧一色| 亚洲国产日韩综合一区| 91免费在线看| 欧美77777| www.色婷婷.com| 免费不卡在线视频| 岛国av在线一区| 成人vr资源| 欧美精品videos| 五月天激情综合网| 日本在线免费观看一区| 一级做a爱片性色毛片| 色婷婷激情视频| a天堂在线视频| 欧美成a人片在线观看久| 手机看片国产日韩| 92看片淫黄大片看国产片| 精品无人区一区二区三区| 91麻豆免费看| 亚洲xxx在线观看| 一级黄色在线观看| 亚洲成人精品久久| 欧美性色黄大片人与善| 4444kk亚洲人成电影在线| 久久综合狠狠综合| 精品91久久| 亚洲精品动漫久久久久| 中文网丁香综合网| 久久人体视频|