欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2016年06月01日 11:09:41   投稿:jingxian  
下面小編就為大家?guī)硪黄獪\談c/c++中使用指針需要注意的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

• 分配空間

• 初始化

• 釋放

二、常見的錯誤有幾種:

1)內(nèi)存分配未成功,卻使用了它

編程新手常犯這種錯誤,因為他們沒有意識到內(nèi)存分配會不成功。常用解決辦法是,使用內(nèi)存之前檢查指針是否為Null。

如果指針p是函數(shù)的參數(shù),那么在函數(shù)的入口處用assert(p != NULL)進行檢查。如果使用malloc或new來申請內(nèi)存,應(yīng)該用if(p == NULL)或if(p != NULL)進行放錯處理。

2)內(nèi)存分配雖然成功,但是尚未初始化就引用它

犯這種錯誤主要有個起因:一是沒有初始化的觀念;二是誤以為內(nèi)存的缺省初值全為零,導(dǎo)致引用初值錯誤(eg. char p[]={‘\0'}).內(nèi)存的缺省初值究竟是什么并沒有統(tǒng)一的標準,盡管有些時候為零,所以無論用何種方式創(chuàng)建數(shù)組,都別忘了賦初值,即便是賦零值也不可省略,不要嫌麻煩。

3)內(nèi)存分配成功并且已經(jīng)初始化,但操作越過了內(nèi)存的邊界

例如在使用數(shù)組是經(jīng)常發(fā)生下標”多1”或者“少1”的操作,特別是在for循環(huán)語句中,循環(huán)次數(shù)很容易搞錯,導(dǎo)致數(shù)組操作越界。

4)忘記了釋放內(nèi)存,造成內(nèi)存泄露

 含有這種錯誤的函數(shù)每被調(diào)用一次就丟失一塊內(nèi)存,剛開始時系統(tǒng)的內(nèi)存充足。你看不到錯誤。當程序所占內(nèi)存大時,系統(tǒng)出現(xiàn)提示:內(nèi)存耗盡。動態(tài)內(nèi)存的申請與釋放必須配對,程序中malloc與free的使用次數(shù)一定要相同,否則肯定有錯誤

5)釋放了內(nèi)存卻繼續(xù)使用它

出現(xiàn)這種情況,有三個原因:<1>程序中的對象調(diào)用關(guān)系過于復(fù)雜,實在難以搞清楚某個對象究竟是否已經(jīng)釋放了內(nèi)存,此時應(yīng)該重新設(shè)計數(shù)據(jù)結(jié)構(gòu),從根本上解決對象管理的混亂局面。<2>函數(shù)的return語句寫錯了,注意不要返回指向“棧內(nèi)存”的“指針”或者“引用”,因為該內(nèi)存在函數(shù)體結(jié)束時被自動銷毀。<3>使用free或delete釋放了內(nèi)存后,沒有將指針設(shè)置為NULL。導(dǎo)致產(chǎn)生“野指針”

[規(guī)則1] 用malloc或new申請內(nèi)存之后,因該立即檢查指針值是否為NULL。防止使用指針值為NULL的內(nèi)存。

[規(guī)則2] 不要忘記為數(shù)組和動態(tài)內(nèi)存賦初值。防止將未被初始化的內(nèi)存作為右值使用。

[規(guī)則3] 避免數(shù)字或指針的下標越界,特別要當心發(fā)生“多1”或者“少1”操作

[規(guī)則4] 動態(tài)內(nèi)存的申請與釋放必須配對,防止內(nèi)存泄漏

[規(guī)則5] 用free或delete釋放了內(nèi)存之后,立即將指針設(shè)置為NULL,防止“野指針”

以上這篇淺談c/c++中使用指針需要注意的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解C語言中的Static關(guān)鍵字

    詳解C語言中的Static關(guān)鍵字

    這篇文章主要為大家介紹了C語言中Static關(guān)鍵字,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 詳細分析C++ 信號處理

    詳細分析C++ 信號處理

    這篇文章主要介紹了C++ 信號處理的相關(guān)資料,文中示例代碼非常詳細,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • opencv實現(xiàn)圖像平移

    opencv實現(xiàn)圖像平移

    這篇文章主要為大家詳細介紹了opencv實現(xiàn)圖像平移,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C++ pair方法與vector方法案例詳解

    C++ pair方法與vector方法案例詳解

    這篇文章主要介紹了C++ pair方法與vector方法案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • C++人工模擬棧實現(xiàn)方法

    C++人工模擬棧實現(xiàn)方法

    在本篇內(nèi)容里小編為大家整理了關(guān)于C++人工模擬棧實現(xiàn)方法和步驟,需要的朋友們可以學(xué)習(xí)下。
    2018-12-12
  • c++中string類成員函數(shù)c_str()的用法

    c++中string類成員函數(shù)c_str()的用法

    c_str()函數(shù)返回一個指向正規(guī)c字符串的指針,內(nèi)容和string類的本身對象是一樣的,通過string類的c_str()函數(shù)能夠把string對象轉(zhuǎn)換成c中的字符串的樣式
    2013-09-09
  • C++設(shè)計模式之組合模式

    C++設(shè)計模式之組合模式

    這篇文章主要介紹了C++設(shè)計模式之組合模式,本文講解什么是組合模式、組合模式的優(yōu)點、組合模式實例等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • opencv2基于SURF特征提取實現(xiàn)兩張圖像拼接融合

    opencv2基于SURF特征提取實現(xiàn)兩張圖像拼接融合

    這篇文章主要為大家詳細介紹了opencv2基于SURF特征提取實現(xiàn)兩張圖像拼接融合,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C語言數(shù)據(jù)結(jié)構(gòu)創(chuàng)建及遍歷十字鏈表

    C語言數(shù)據(jù)結(jié)構(gòu)創(chuàng)建及遍歷十字鏈表

    這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)十字鏈表的創(chuàng)建及遍歷,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2021-10-10
  • C語言函數(shù)指針數(shù)組實現(xiàn)計算器功能

    C語言函數(shù)指針數(shù)組實現(xiàn)計算器功能

    這篇文章主要通過C語言函數(shù)指針數(shù)組實現(xiàn)了計算器的功能,是一個很好而且流程詳細的小例子,感興趣的新手朋友們可以自己動手也寫一遍
    2022-04-04

最新評論