国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

淺談c/c++中使用指針需要注意的問題

2019-10-29 21:27:10
字體:
來源:轉載
供稿:網友
下面小編就為大家帶來一篇淺談c/c++中使用指針需要注意的問題。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
 

一、使用指針的時候需要注意幾點:

• 分配空間

• 初始化

• 釋放

二、常見的錯誤有幾種:

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++中使用指針需要注意的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。



注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桑植县| 姜堰市| 崇义县| 丹棱县| 乌审旗| 潢川县| 云龙县| 犍为县| 垣曲县| 荔浦县| 敦煌市| 芜湖县| 台北市| 温宿县| 洛扎县| 福海县| 丹巴县| 道真| 环江| 北流市| 凌源市| 新疆| 大丰市| 班戈县| 辽阳县| 汨罗市| 桃园市| 秦安县| 财经| 靖宇县| 宁波市| 凉城县| 南投市| 渝中区| 贡嘎县| 平和县| 师宗县| 澳门| 太和县| 叶城县| 永吉县|