<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          C語言動態(tài)內(nèi)存申請

          共 1151字,需瀏覽 3分鐘

           ·

          2021-01-12 18:27

          前言

          上一章節(jié)主要是介紹指針基礎(chǔ),了解指針操作數(shù)組,指針與函數(shù)的關(guān)系。本章節(jié)主要介紹C語言指針操作堆內(nèi)存,簡單來說就是動態(tài)內(nèi)存申請。

          C語言動態(tài)內(nèi)存申請

          在C語言中,當(dāng)我們聲明變量時,內(nèi)存在棧的空間中分配。堆棧中分配的內(nèi)存在編譯時是固定的,一直保留到程序執(zhí)行結(jié)束。創(chuàng)建數(shù)組時,必須在聲明本身時指定大小,并且在程序執(zhí)行期間不能更改該大小。當(dāng)我們不知道要存儲在數(shù)組中的值的數(shù)量時,這是一個主要問題。為了解決這個問題,我們使用了動態(tài)內(nèi)存分配的概念。動態(tài)內(nèi)存分配從堆存儲中分配內(nèi)存。動態(tài)內(nèi)存分配定義:程序執(zhí)行期間的內(nèi)存分配稱為動態(tài)內(nèi)存分配,動態(tài)內(nèi)存分配是在程序執(zhí)行時手動分配內(nèi)存的過程。

          我們使用預(yù)定義或標(biāo)準(zhǔn)庫函數(shù)來動態(tài)分配內(nèi)存。有

          四個已知的作為標(biāo)題文件中定義的標(biāo)準(zhǔn)庫函數(shù)“stdlib.h中”。他們?nèi)缦?..

          1. malloc()

          2. calloc()

          3. realloc()

          4. free()

          相關(guān)函數(shù)原型如下圖:

          malloc函數(shù)

          是用于分配指定字節(jié)數(shù)的內(nèi)存塊并返回void指針的標(biāo)準(zhǔn)庫函數(shù)??梢詫oid指針強(qiáng)制轉(zhuǎn)換為任何數(shù)據(jù)類型。如果malloc函數(shù)由于任何原因無法分配內(nèi)存,它將返回NULL指針。一級指針動態(tài)內(nèi)存申請

          calloc函數(shù)

          calloc是標(biāo)準(zhǔn)的庫函數(shù),用于分配指定字節(jié)數(shù)的多個內(nèi)存塊

          并將其初始化為零。calloc()函數(shù)返回void指針。如果calloc函數(shù)由于任何原因無法分配內(nèi)存,則它將返回NULL指針。通常,calloc用于為數(shù)組和結(jié)構(gòu)體分配內(nèi)存。

          calloc函數(shù)帶有兩個參數(shù)

          1. 要分配的塊數(shù)。

          2. 每個塊的大?。ㄒ宰止?jié)為單位)。

          一級指針動態(tài)內(nèi)存申請,并初始化

          realloc

          realloc是標(biāo)準(zhǔn)的庫函數(shù),用于修改以前使用malloc或calloc分配的內(nèi)存塊的大小。realloc函數(shù)返回void指針。如果calloc函數(shù)由于任何原因無法分配內(nèi)存,它將返回NULL指針。一級指針重新申請內(nèi)存,保留原數(shù)據(jù)

          free函數(shù)

          free是用于解除分配先前使用malloc或calloc分配的內(nèi)存塊的標(biāo)準(zhǔn)庫函數(shù)。free函數(shù)返回void指針。當(dāng)free函數(shù)與使用calloc創(chuàng)建的已分配內(nèi)存一起使用時,將釋放所有塊。

          注意點(diǎn):

          1. 手動申請的內(nèi)存都是需要手動釋放

          2. 同一塊內(nèi)存不能釋放兩次

          3. 釋放完后習(xí)慣于指針置空處理

          4. 從哪里申請從哪里釋放,指針做偏移時,釋放需還原

          尾言

          本章節(jié)作業(yè):用二級指針通過動態(tài)內(nèi)存申請的方式實(shí)現(xiàn)二級指針變?yōu)槎S數(shù)組的用法

          落后了太多,只有拼命沖刺,就像跑步一樣,落后了好幾圈,只有拼了命往上追。

          瀏覽 48
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  顾美玲管家新春 | 国产麻传媒一区二区三区网站入口 | 亚洲天堂影音先锋 | 日皮免费看 | 自拍偷拍二区 |