程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 淺談c/c++中應用指針須要留意的成績

淺談c/c++中應用指針須要留意的成績

編輯:關於C++

淺談c/c++中應用指針須要留意的成績。本站提示廣大學習愛好者:(淺談c/c++中應用指針須要留意的成績)文章只能為提供參考,不一定能成為您想要的結果。以下是淺談c/c++中應用指針須要留意的成績正文


1、應用指針的時刻須要留意幾點:

• 分派空間

• 初始化

• 釋放

2、罕見的毛病有幾種:

1)內存分派未勝利,卻應用了它

編程老手常犯這類毛病,由於他們沒無意識到內存分派會不勝利。經常使用處理方法是,應用內存之前檢討指針能否為Null。

假如指針p是函數的參數,那末在函數的進口處用assert(p != NULL)停止檢討。假如應用malloc或new來請求內存,應當用if(p == NULL)或if(p != NULL)停止放錯處置。

2)內存分派固然勝利,然則還沒有初始化就援用它

犯這類毛病重要有個原由:一是沒有初始化的不雅念;二是誤認為內存的缺省初值全為零,招致援用初值毛病(eg. char p[]={‘\0'}).內存的缺省初值畢竟是甚麼並沒有同一的尺度,雖然有些時刻為零,所以不管用何種方法創立數組,都別忘了賦初值,即使是賦零值也弗成省略,不要嫌費事。

3)內存分派勝利而且曾經初始化,但操作超出了內存的界限

例如在應用數組是常常產生下標”多1”或許“少1”的操作,特殊是在for輪回語句中,輪回次數很輕易弄錯,招致數組操作越界。

4)忘卻了釋放內存,形成內存洩漏

 含有這類毛病的函數每被挪用一次就喪失一塊內存,剛開端時體系的內存充分。你看不到毛病。當法式所占內存年夜時,體系湧現提醒:內存耗盡。靜態內存的請求與釋放必需配對,法式中malloc與free的應用次數必定要雷同,不然確定有毛病

5)釋放了內存卻持續應用它

湧現這類情形,有三個緣由:<1>法式中的對象挪用關系過於龐雜,其實難以弄清晰某個對象畢竟能否曾經釋放了內存,此時應當從新設計數據構造,從基本上處理對象治理的凌亂局勢。<2>函數的return語句寫錯了,留意不要前往指向“棧內存”的“指針”或許“援用”,由於該內存在函數體停止時被主動燒毀。<3>應用free或delete釋放了內存後,未將指針設置為NULL。招致發生“野指針”

[規矩1] 用malloc或new請求內存以後,因該立刻檢討指針值能否為NULL。避免應用指針值為NULL的內存。

[規矩2] 不要忘卻為數組和靜態內存賦初值。避免將未被初始化的內存作為右值應用。

[規矩3] 防止數字或指針的下標越界,特殊要小心產生“多1”或許“少1”操作

[規矩4] 靜態內存的請求與釋放必需配對,避免內存洩露

[規矩5] 用free或delete釋放了內存以後,立刻將指針設置為NULL,避免“野指針”

以上這篇淺談c/c++中應用指針須要留意的成績就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved