最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言動(dòng)態(tài)內(nèi)存分配的詳解

 更新時(shí)間:2017年07月23日 09:56:55   投稿:lqh  
這篇文章主要介紹了C語(yǔ)言動(dòng)態(tài)內(nèi)存分配的詳解的相關(guān)資料,這里提供了實(shí)現(xiàn)方法整理和出現(xiàn)錯(cuò)誤的解決辦法,需要的朋友可以參考下

C語(yǔ)言動(dòng)態(tài)內(nèi)存分配的詳解

1.為什么使用動(dòng)態(tài)內(nèi)存分配

數(shù)組在使用的時(shí)候可能造成內(nèi)存浪費(fèi),使用動(dòng)態(tài)內(nèi)存分配可以解決這個(gè)問題。

2. malloc和free

C函數(shù)庫(kù)提供了兩個(gè)函數(shù),malloc和free,分別用于執(zhí)行動(dòng)態(tài)內(nèi)存分配和釋放。

(1)void *malloc(size_t size);

malloc的參數(shù)就是需要分配的內(nèi)存字節(jié)數(shù)。malloc分配一塊連續(xù)的內(nèi)存。如果操作系統(tǒng)無(wú)法向malloc提供更多的內(nèi)存,malloc就返回一個(gè)NULL指針。

(2)void free(void *pointer);

free的參數(shù)要么是NULL,要么是一個(gè)先前從malloc、calloc或realloc返回的值。

3. calloc和realloc

(1)void *calloc(size_t num_elements,size_t element_size);

calloc也用于內(nèi)存分配。malloc和calloc之間的主要區(qū)別是后者在返回指向內(nèi)存的指針之前把它初始化為0。

(2)realloc(void *ptr,size_t new_size);

realloc函數(shù)用于修改一個(gè)原先已經(jīng)分配的內(nèi)存塊的大小。如果它用于擴(kuò)大一個(gè)內(nèi)存,那么這塊內(nèi)存原先的內(nèi)容依然保留,新增加的內(nèi)存添加到原先內(nèi)存塊的后面。如果它用于縮小一個(gè)內(nèi)存塊,該內(nèi)存塊尾部的部分內(nèi)存被拿掉,剩余部分內(nèi)存的原先內(nèi)容依然保留。

4. 使用動(dòng)態(tài)分配的內(nèi)存

(1)使用示例

int *pi;

pi = malloc(25 * sizeof(int));

if(pi == NULL){

printf("out of memery\n");

exit(1);

}

(2)使用間接訪問

int *pi2,i;

pi2 = pi;

for(i = 0;i < 25;i += 1)

*pi2++ = 0;

也可以使用下標(biāo)。

int i;

for(i = 0;i < 25;i += 1)

*pi[i] = 0;

5. 常見的動(dòng)態(tài)內(nèi)存錯(cuò)誤

常見的錯(cuò)誤有:對(duì)NULL指針進(jìn)行解引用操作、對(duì)分配的內(nèi)存進(jìn)行操作時(shí)越過邊界、釋放并非內(nèi)存分配的內(nèi)存、試圖釋放一塊動(dòng)態(tài)分配的內(nèi)存的一部分以及一塊動(dòng)態(tài)內(nèi)存釋放之后被繼續(xù)使用。

以上就是對(duì)C語(yǔ)言中動(dòng)態(tài)內(nèi)存分配的資料講解,如有疑問請(qǐng)大家留言或者到本站社區(qū)討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)貪吃蛇游戲設(shè)計(jì)

    C語(yǔ)言實(shí)現(xiàn)貪吃蛇游戲設(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)貪吃蛇游戲設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C++中map容器的具體使用

    C++中map容器的具體使用

    本文主要介紹了C++中map容器的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • C++實(shí)現(xiàn)LeetCode(904.水果裝入果籃)

    C++實(shí)現(xiàn)LeetCode(904.水果裝入果籃)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(904.水果裝入果籃),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++存儲(chǔ)持續(xù)性生命周期原理解析

    C++存儲(chǔ)持續(xù)性生命周期原理解析

    這篇文章主要為大家介紹了C++存儲(chǔ)持續(xù)性生命周期原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • 如何使用C語(yǔ)言實(shí)現(xiàn)細(xì)菌的繁殖與擴(kuò)散

    如何使用C語(yǔ)言實(shí)現(xiàn)細(xì)菌的繁殖與擴(kuò)散

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)細(xì)菌的繁殖與擴(kuò)散,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Qt學(xué)習(xí)筆記之QPalette調(diào)色板類

    Qt學(xué)習(xí)筆記之QPalette調(diào)色板類

    這篇文章主要為大家詳細(xì)介紹了Qt學(xué)習(xí)筆記之QPalette調(diào)色板類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • C語(yǔ)言中自定義類型詳解

    C語(yǔ)言中自定義類型詳解

    大家好,本篇文章主要講的是C語(yǔ)言中自定義類型詳解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • C++ ReSharper2021激活碼永久有效

    C++ ReSharper2021激活碼永久有效

    ReSharperC++是為c/c++開發(fā)者打造的一款實(shí)用Visual Studio擴(kuò)展插件,這款插件旨在提升開發(fā)者的效率,今天給大家分享這款軟件的激活方法,需要C++ ReSharper2021激活碼的朋友參考下本文
    2021-06-06
  • C++生成格式化的標(biāo)準(zhǔn)字符串實(shí)例代碼

    C++生成格式化的標(biāo)準(zhǔn)字符串實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于C++生成格式化的標(biāo)準(zhǔn)字符串的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • C++中使用mutable關(guān)鍵字的場(chǎng)景分析

    C++中使用mutable關(guān)鍵字的場(chǎng)景分析

    C++中的mutable關(guān)鍵字用于修飾類的成員變量,使其在const成員函數(shù)中可以被修改,它主要用于緩存、線程同步和調(diào)試等場(chǎng)景,以支持對(duì)象的邏輯常量性,在使用mutable時(shí),應(yīng)確保其修改不會(huì)破壞對(duì)象的外部表現(xiàn)狀態(tài),本文介紹C++中使用mutable關(guān)鍵字的場(chǎng)景分析,感興趣的朋友一起看看吧
    2025-02-02

最新評(píng)論

平邑县| 天津市| 靖江市| 义马市| 英德市| 文成县| 历史| 祁连县| 城市| 绿春县| 河源市| 敖汉旗| 修武县| 临漳县| 建始县| 岳普湖县| 沙田区| 临海市| 乳源| 墨竹工卡县| 洛宁县| 德格县| 永宁县| 濮阳市| 措美县| 陈巴尔虎旗| 九龙坡区| 锡林浩特市| 阳新县| 八宿县| 临泽县| 巴里| 炉霍县| 康定县| 四会市| 株洲县| 五指山市| 泸定县| 色达县| 汤阴县| 睢宁县|