chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

指針被釋放后就變成了空指針嗎

學(xué)益得智能硬件 ? 來源:學(xué)益得智能硬件 ? 2025-01-22 09:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

指針被釋放后,是不是就變成了空指針?有好多同學(xué)提出了這樣的問題。

借用《C專家編程》上面的一段代碼,可以很好的解釋這個(gè)問題。

#include 


int main()
{
    char *s = (char *)malloc(128);


    strcpy(s, "helloworld");


free(s);


    if (s != NULL)
        strcpy(s, "12345");


    return 0;
}

這段代碼大家看下有沒有問題,能不能順利運(yùn)行?

前面三行都沒有問題,指針 s 指向了一塊堆內(nèi)存,把字符串 helloworld 拷貝到堆內(nèi)存中,然后釋放了 s。

問題就出在這,很多同學(xué)不理解,指針 s 被釋放了,是不是就變成了空指針?

如果變成了空指針,那下面的判斷就不會(huì)成立,也就不會(huì)執(zhí)行拷貝操作。

其實(shí)這樣的理解是有問題的。

指針 s 指向了堆內(nèi)存,free(s) 準(zhǔn)確的講,是把 s 指向的內(nèi)存釋放掉,這個(gè)操作對(duì) s 本身并沒有影響,s 里面保存的還是原來那塊內(nèi)存的地址,并不是空。

所以下面的判斷語(yǔ)句成立,繼續(xù)執(zhí)行拷貝操作。

由于 s 指向的內(nèi)存已經(jīng)被釋放掉,強(qiáng)行往里面拷貝,就會(huì)出現(xiàn)意想不到的錯(cuò)誤。

養(yǎng)成良好的編程習(xí)慣就是指針被釋放掉后,手動(dòng)把它變成空,空指針比野指針、懸空指針更可控。

指針是C語(yǔ)言的精髓,如果你還是覺得模棱兩可,不妨看下這套播放量近 20 萬的指針教程,課程以及資料全部開源,看完后一定會(huì)讓你的指針?biāo)竭_(dá)到一個(gè)更高的級(jí)別。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 指針
    +關(guān)注

    關(guān)注

    1

    文章

    484

    瀏覽量

    71819
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4965

    瀏覽量

    73875

原文標(biāo)題:指針被釋放后,是不是變成了空指針

文章出處:【微信號(hào):學(xué)益得智能硬件,微信公眾號(hào):學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    傳遞一個(gè)無符號(hào)的 long 型指針給函數(shù)

    C語(yǔ)言允許傳遞指針給函數(shù),只需要簡(jiǎn)單地聲明函數(shù)參數(shù)為指針類型即可。 下面的實(shí)例中,我們傳遞一個(gè)無符號(hào)的 long 型指針給函數(shù),并在函數(shù)內(nèi)改變這個(gè)值: 實(shí)例 #include #include
    發(fā)表于 01-27 11:51

    指針與函數(shù)詳解

    函數(shù)的最大區(qū)別是函數(shù)指針的函數(shù)名是一個(gè)指針,即函數(shù)名前面有一個(gè)指針類型的標(biāo)志型號(hào)“*”。 注意指針函數(shù)與函數(shù)指針表示方法的不同,千萬不要混淆
    發(fā)表于 01-23 06:02

    C語(yǔ)言重點(diǎn)—指針

    個(gè)字節(jié)大?。谧屪兞恐赶蜻@篇空間,即就是這片空間屬于這個(gè)變量,再在這片空間中存儲(chǔ)你要存儲(chǔ)的數(shù)值。 三. 指針類型(int *)的存儲(chǔ)過程和原理3.1 指針類型的賦值規(guī)范(1) 第一種先定義賦值
    發(fā)表于 01-22 08:23

    函數(shù)指針介紹

    就是一個(gè)指針函數(shù)。其返回值是一個(gè) int 類型的指針,是一個(gè)地址。 指針函數(shù)也沒什么特別的,和普通函數(shù)對(duì)比不過就是其返回了一個(gè)指針(即地址值)而已。
    發(fā)表于 01-21 08:11

    值傳遞、指針傳遞、引用傳遞介紹

    進(jìn)行操作,也就是說,即使形參的值發(fā)生改變,實(shí)參的值也完全不受影響。   2、指針傳遞:指針傳遞其實(shí)是值傳遞的一種,它傳遞的是地址。值傳遞過程中,調(diào)函數(shù)的形參作為調(diào)函數(shù)的局部變量來處
    發(fā)表于 01-21 06:48

    函數(shù)指針與回調(diào)函數(shù)解讀

    是,在程序執(zhí)行期間可以動(dòng)態(tài)更改調(diào)用的回調(diào)函數(shù)。 一、函數(shù)指針函數(shù)指針,顧名思義它就是一個(gè)指針,只不過它是一個(gè)函數(shù)指針,所以指向的是一個(gè)函數(shù)
    發(fā)表于 01-19 07:34

    指針難學(xué)的4點(diǎn)原因分析

    難點(diǎn)1. 討厭的星號(hào) 定義指針變量p時(shí),都會(huì)加個(gè)*號(hào)。在用到指針變量p時(shí),也會(huì)加個(gè)*號(hào)。比如以下代碼: int main() { int *p; p = malloc(sizeof(int
    發(fā)表于 01-16 06:12

    C語(yǔ)言函數(shù)指針的六個(gè)高級(jí)的應(yīng)用場(chǎng)景

    函數(shù)指針是一種非常強(qiáng)大的編程工具,它可以讓我們以更加靈活的方式編寫程序。在本文中,我們將介紹 6 個(gè)函數(shù)指針的高級(jí)應(yīng)用場(chǎng)景,并貼出相應(yīng)的代碼案例和解釋。 回調(diào)函數(shù) 回調(diào)函數(shù)是指在某個(gè)事件發(fā)生時(shí)
    發(fā)表于 01-04 12:25

    指針的基礎(chǔ)

    1. int va; 這是一個(gè)整型變量,32位CPU的話,占有32個(gè)bite 2. int *va; 這是一個(gè)整型指針變量,用于存放一個(gè)整型變量的地址 3. int **va; 這是一個(gè)整型
    發(fā)表于 12-15 06:06

    函數(shù)指針指針函數(shù)的區(qū)別

    = fun(a);   注意指針函數(shù)與函數(shù)指針表示方法的不同,千萬不要混淆。最簡(jiǎn)單的辨別方式就是看函數(shù)名前面的指針*號(hào)有沒有括號(hào)()包含,如果
    發(fā)表于 12-12 06:34

    函數(shù)指針的概念

    函數(shù)指針是指向函數(shù)的指針變量。 通常我們說的指針變量是指向一個(gè)整型、字符型或數(shù)組等變量,而函數(shù)指針是指向函數(shù)。 函數(shù)指針可以像一般函數(shù)一樣
    發(fā)表于 12-11 08:10

    如何用函數(shù)指針調(diào)用函數(shù)

    給大家舉一個(gè)例子: int Func(int x);/*聲明一個(gè)函數(shù)*/ int (*p) (int x);/*定義一個(gè)函數(shù)指針*/ p = Func; /*將Func函數(shù)的首地址賦給指針變量
    發(fā)表于 12-11 06:26

    C指針的妙用分享

    1、你知道嗎?指針其實(shí)是個(gè)天生的數(shù)學(xué)家!看這個(gè): #include int main() { int arr[] = {10, 20, 30, 40, 50}; int *p = arr
    發(fā)表于 11-17 06:35

    rt_tick_increase 引用指針變量未判斷其是否為?

    指針變量使用之前沒有判斷是否為,萬一rt_system_scheduler_start此函數(shù)調(diào)用之前來滴答定時(shí)器的中斷了,這樣操作是不是會(huì)有風(fēng)險(xiǎn)
    發(fā)表于 10-09 08:07

    函數(shù)指針的六個(gè)常見應(yīng)用場(chǎng)景

    函數(shù)指針在嵌入式開發(fā)中有著廣泛的應(yīng)用,它讓代碼更加靈活,減少冗余,提高可擴(kuò)展性。很多時(shí)候,我們需要根據(jù)不同的情況動(dòng)態(tài)調(diào)用不同的函數(shù),而函數(shù)指針正是實(shí)現(xiàn)這一需求的重要工具。本文將介紹六個(gè)常見的函數(shù)指針
    的頭像 發(fā)表于 04-07 11:58 ?1454次閱讀
    函數(shù)<b class='flag-5'>指針</b>的六個(gè)常見應(yīng)用場(chǎng)景