首頁考試吧論壇Exam8視線考試商城網絡課程模擬考試考友錄實用文檔求職招聘論文下載
2013中考
法律碩士
2013高考
MBA考試
2013考研
MPA考試
在職研
中科院
考研培訓 自學考試 成人高考
四 六 級
GRE考試
攻碩英語
零起點日語
職稱英語
口譯筆譯
申碩英語
零起點韓語
商務英語
日語等級
GMAT考試
公共英語
職稱日語
新概念英語
專四專八
博思考試
零起點英語
托福考試
托業(yè)考試
零起點法語
雅思考試
成人英語三級
零起點德語
等級考試
華為認證
水平考試
Java認證
職稱計算機 微軟認證 思科認證 Oracle認證 Linux認證
公 務 員
導游考試
物 流 師
出版資格
單 證 員
報 關 員
外 銷 員
價格鑒證
網絡編輯
駕 駛 員
報檢員
法律顧問
管理咨詢
企業(yè)培訓
社會工作者
銀行從業(yè)
教師資格
營養(yǎng)師
保險從業(yè)
普 通 話
證券從業(yè)
跟 單 員
秘書資格
電子商務
期貨考試
國際商務
心理咨詢
營 銷 師
司法考試
國際貨運代理人
人力資源管理師
廣告師職業(yè)水平
衛(wèi)生資格 執(zhí)業(yè)醫(yī)師 執(zhí)業(yè)藥師 執(zhí)業(yè)護士
會計從業(yè)資格
基金從業(yè)資格
統(tǒng)計從業(yè)資格
經濟師
精算師
統(tǒng)計師
會計職稱
法律顧問
ACCA考試
注冊會計師
資產評估師
審計師考試
高級會計師
注冊稅務師
國際內審師
理財規(guī)劃師
美國注冊會計師
一級建造師
安全工程師
設備監(jiān)理師
公路監(jiān)理師
公路造價師
二級建造師
招標師考試
物業(yè)管理師
電氣工程師
建筑師考試
造價工程師
注冊測繪師
質量工程師
巖土工程師
造價員考試
注冊計量師
環(huán)保工程師
化工工程師
咨詢工程師
結構工程師
城市規(guī)劃師
材料員考試
監(jiān)理工程師
房地產估價
土地估價師
安全評價師
房地產經紀人
投資項目管理師
環(huán)境影響評價師
土地登記代理人
繽紛校園 實用文檔 英語學習 作文大全 求職招聘 論文下載 訪談|游戲
軟件水平考試
軟件水平考試資訊
軟件水平考試試題
軟件水平考試專項輔導
軟件水平考試交流互動
軟件水平考試交流互動
您現(xiàn)在的位置: 考試吧 > 軟件水平考試 > 心得技巧 > 正文

2012《軟件設計師》備考:C++編程易范錯誤集合

為了幫助2012年參加軟件水平考試的朋友更好的備考2012年軟件水平考試,考試吧軟件水平考試頻道為大家整理“2012《軟件設計師》備考:C++編程易范錯誤集合”,供大家參考。

  C/C++語言中有許多對初學者(甚至是有經驗的軟件設計師)來說很輕易范的錯誤。通曉這樣的錯誤可使你免于陷入其中。

  忘記初始化指針

  這種錯誤只是一般“忘記初始化變量”錯誤的一個非凡形式(C/C++中變量不會自動初始化,而Basic可以)。使這種錯誤更糟糕的原因是它的后果往往更加糟糕:

  void SomeFunction()

  {

  int *pnVar

  int nVal;

  nVal = *pnVar; // Bad enough.

  *pnVar = nVal; // MUCh worse.

  }

  在這個例子中,指針變量pnVar從未被賦值。因此你必須假設它含有的是雜亂的數(shù)據,從一個混亂信息指針中讀數(shù)糟糕的很,因為結果肯定是雜亂數(shù)據,向一個混亂信息指針寫數(shù)據更糟,因為它將導致一些不知道什么地方的數(shù)據被重寫。

  假如被重寫的區(qū)域無用,這到沒什么危害。假如被重寫的區(qū)域有用,數(shù)據就會丟失。這種類型的錯誤那么難找,是因為直到程序企圖使用已丟失的數(shù)據時問題才會呈現(xiàn)出來。這種問題可能是在數(shù)據丟失后好久才發(fā)生的。

  由于這一問題手工判定很困難,Visual C++編譯器就通過一些努力來避免它的發(fā)生。例如,當你編譯上述函數(shù)時就會產生一個警告。在這種情況下,編譯器會告訴你變量在使用前未被賦值。在很多情況下,它不可能告訴你。

  Windows 95操作系統(tǒng)試圖用保護存儲器在一定程度上幫助解決難題:假如應用程序企圖從不屬于它的存儲器讀或寫,Windows通常能截獲該請求,并立即終止該程序。可惜,Windows 95不能截獲對應用程序擁有的存儲器的無效訪問,它也不能截獲所有非法訪問,因為必須保留某些缺口,以與Windows 3.1的兼容性名義開放。

  忘記釋放堆內存

  請記住從堆獲得分配的任何內存都必須要釋放。假如你用完內存以后,忘記釋放它,系統(tǒng)內存就會變得愈來愈小,直到最后你的程序不能運行而崩潰。

  這個問題會出現(xiàn)在諸如下列的一些情況中:

  Car* GetAnewCar(int nOccupants)

  {

  Car* pCar;

  if(nOccupants < 4)

  {

  pCar = new Car(2); // get a two-door.

  }

  else

  {

  pCar = new Car(4); // otherwise, a four-door.

  }

  return pCar;

  }

  void GoToTheStore(int nOccupants)

  {

  // get a car。

  Car* pCar = GetAnewCar(nOccupants);

  // Now drive to the store。

  if(pCar)

  {

  pCar->Drive(Store);

  }

  }

  在此例中,函數(shù)GoToTheStore()首先分配一輛新車來開--這有點浪費,但你肯定會同意這種算法可以正常工作。只要分配了新車,它就會開到有調用pCar->Drive(Store)所指向的商店。

1 2 3 4 5 6 7 下一頁
  相關推薦:

  計算機技術與軟件專業(yè)技術資格(水平)考試官網匯總

  計算機軟件專業(yè)技術考試考場規(guī)則(筆試)

  軟件水平考試考前必讀:軟考應試錦囊

  軟件水平考試考生必看:100天突破復習計劃

文章搜索
軟件水平考試欄目導航
版權聲明:如果軟件水平考試網所轉載內容不慎侵犯了您的權益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉載本軟件水平考試網內容,請注明出處。