在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言中的懸空指針和野指針是什么意思?

單片機與嵌入式 ? 來源:單片機與嵌入式 ? 2023-02-09 17:20 ? 次閱讀

提起C語言大部分開發者很自然就會想到指針二字,沒錯,作為C的核心和靈魂,它的地位咱們就不再贅述了,今天我們想跟大家講的是指針中的兩個特有名詞:“懸空指針”和“野指針”。

1 懸空指針

C語言中的指針可以指向一塊內存,如果這塊內存稍后被操作系統回收(被釋放),但是指針仍然指向這塊內存,那么,此時該指針就是“懸空指針”。下面這段C語言代碼是一個例子,請看:

b32f37aa-a795-11ed-bfe3-dac502259ad0.png

C語言中的“懸空指針”會引發不可預知的錯誤,而且這種錯誤一旦發生,很難定位。這是因為在 free(p) 之后,p 指針仍然指向之前分配的內存,如果這塊內存暫時可以被程序訪問并且不會造成沖突,那么之后使用 p 并不會引發錯誤。

最難調試的 bug 總是不能輕易復現的 bug,對不?

所以在實際的C語言程序開發中,為了避免出現“懸空指針”引發不可預知的錯誤,在釋放內存之后,常常會將指針 p 賦值為 NULL:

b33fbbf2-a795-11ed-bfe3-dac502259ad0.png

這么做的好處是一旦再次使用被釋放的指針 p,就會立刻引發“段錯誤”,程序員也就能立刻知道應該修改C語言代碼了。

2野指針

上面我們講的“懸空指針”是指向被釋放內存的指針,“野指針”則是不確定其具體指向的指針。“野指針”最常來自于未初始化的指針,例如下面這段C語言代碼:

b34a48ec-a795-11ed-bfe3-dac502259ad0.png

因為“野指針”可能指向任意內存段,因此它可能會損壞正常的數據,也有可能引發其他未知錯誤,所以C語言中的“野指針”危害性甚至比“懸空指針”還要嚴重。在實際的C語言程序開發中,定義指針時,一般都要盡量避免“野指針”的出現(賦初值):

b356a218-a795-11ed-bfe3-dac502259ad0.png

這兩點內容,是C語言比較重要的內容,希望大家在編碼的時候一定要注意。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內存
    +關注

    關注

    8

    文章

    3064

    瀏覽量

    74374
  • C語言
    +關注

    關注

    180

    文章

    7615

    瀏覽量

    137827
  • 指針
    +關注

    關注

    1

    文章

    481

    瀏覽量

    70613
  • 代碼
    +關注

    關注

    30

    文章

    4836

    瀏覽量

    69119

原文標題:C語言中的“懸空指針”和“野指針”是什么意思?

文章出處:【微信號:單片機與嵌入式,微信公眾號:單片機與嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    C語言中懸空指針指針

    提起C語言,大部分開發者很自然就會想到指針二字。沒錯,作為C的核心和靈魂,它的地位咱們就不再贅述了。
    發表于 07-20 11:58 ?1043次閱讀

    C語言中void指針的基本認識及典型應用

    C語言中,*類型就是指針類型,比如 int *p,double *q,雖然是不一樣的指針,但是大小卻一樣sizeof(p) == sizeof(q),因為它們都是同一種類型*類型的。
    發表于 02-01 09:26 ?1148次閱讀

    C語言中多級指針的概念和使用方法

    多級指針C語言中是一種特殊的指針類型,它可以指向其他指針指針
    發表于 08-16 16:16 ?1206次閱讀

    C語言中指針指針的概念及產生原因

    C語言中指針是一種非常強大和靈活的工具,但同時也容易引發一些問題,其中包括空指針指針
    發表于 08-16 16:18 ?1554次閱讀

    C語言中指針是什么?如何規避指針

    C語言中指針是什么?有哪幾種類型?指針有何作用?如何規避指針
    發表于 02-25 06:47

    C語言指針電子教程

    本資料是一份不錯的關于C語言指針的電子教程,希望對大家有所幫助... 指針簡介 指針C
    發表于 07-30 16:00 ?77次下載

    C語言中指針的介紹非常詳細

    C語言中指針的介紹非常詳細 C語言中指針的介紹非常詳細
    發表于 12-25 10:39 ?57次下載

    c語言函數指針定義,指針函數和函數指針的區別

     往往,我們一提到指針函數和函數指針的時候,就有很多人弄不懂。下面就由小編詳細為大家介紹C語言中函數指針
    發表于 11-16 15:18 ?3649次閱讀

    基于C語言中指針的基本用法解析

    C語言中其它的知識都學得可以,唯獨指針搞不懂。如果是這樣,我可以很負責的告訴你,對于這門編程語言,你等于是沒學。所以學好指針對于初學者是非
    的頭像 發表于 01-09 15:12 ?4842次閱讀

    簡述C語言中什么是懸空指針指針

    提起C語言大部分開發者很自然就會想到指針二字,沒錯,作為C的核心和靈魂,它的地位咱們就不再贅述了,今天我們想跟大家講的是指針中的兩個特有名詞
    的頭像 發表于 03-18 11:18 ?2472次閱讀

    C語言中指針是怎么來的?

    )、malloc函數申請堆內存返回的地址(但未使用free釋放,是在堆空間動態申請) 需要注意的是,指針不是NULL指針,通常NULL指針可以使用if語句來判斷,但是
    的頭像 發表于 06-01 16:43 ?2602次閱讀

    C語言初識指針

    目錄1. 指針是什么?2. 指針指針類型3.指針3.1
    發表于 12-31 19:57 ?26次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>初識<b class='flag-5'>指針</b>

    C語言中指針(重點)超詳細

    C語言中指針1、指針是什么2、指針指針類型2.1、指針
    發表于 01-13 14:10 ?11次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>的<b class='flag-5'>指針</b>(重點)超詳細

    C語言中什么是指針數組

    C語言中一個數組,若其元素均為指針類型數據,稱為指針數組,也就是說,指針數組中的每一個元素都存放一個地址,相當于一個
    的頭像 發表于 03-10 15:26 ?1889次閱讀

    簡述C語言中指針重點

    C語言中一個函數可以返回一個整型值、字符值、實型值等,也可以返回指針型的數據,即地址,其概念與以前類似,只是返回的值的類型是指針類型。
    的頭像 發表于 03-10 15:28 ?646次閱讀
    主站蜘蛛池模板: 日本xxxx色视频在线观看免 | 一级片一级片一级片 | 欧美高清一级 | 手机国产看片 | 乱色伦短篇小说 | 亚洲第一久久 | 日本特黄特色大片免费播放视频 | 成人综合色站 | 亚洲精品美女久久久 | 亚洲黄网免费 | 国产怡红院 | 国产成人精品曰本亚洲78 | 男人天堂伊人网 | 亚洲第一黄色网址 | 欧美一欧美一区二三区性 | 久久婷婷五综合一区二区 | 欧洲成人r片在线观看 | 久久精品亚洲热综合一本奇米 | 国产亚洲午夜精品a一区二区 | 午夜剧场官网 | 操你啦网站| 综合亚洲一区二区三区 | 国内久久精品 | 色婷婷久久 | 欧美乱码视频 | 国内黄色精品 | 视频在线观看免费播放www | 久久伊人成人 | 男人cao女人视频在线观看 | 免费播放黄色 | 日本理论午夜中文字幕第一页 | 欧美三级免费观看 | 性 色 黄 一级 | 在线观看网站国产 | 五月丁五月丁开行停停乱 | 亚洲 丝袜 制服 欧美 另类 | 扒开双腿猛进湿润18p | 爱爱的免费视频 | 久久伊人男人的天堂网站 | 高清一级毛片一本到免费观看 | 中文字幕 亚洲一区 |