色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

C語言中的動態(tài)內存管理

電子工程師 ? 來源:未知 ? 作者:李倩 ? 2018-11-12 14:46 ? 次閱讀

本章將講解 C 中的動態(tài)內存管理。C語言為內存的分配和管理提供了幾個函數(shù)。這些函數(shù)可以在頭文件中找到。

注意:void * 類型表示未確定類型的指針。C、C++ 規(guī)定 void * 類型可以通過類型轉換強制轉換為任何其它類型的指針。

動態(tài)分配內存

編程時,如果您預先知道數(shù)組的大小,那么定義數(shù)組時就比較容易。例如,一個存儲人名的數(shù)組,它最多容納 100 個字符,所以您可以定義數(shù)組,如下所示:

char name[100];

但是,如果您預先不知道需要存儲的文本長度,例如您向存儲有關一個主題的詳細描述。在這里,我們需要定義一個指針,該指針指向未定義所需內存大小的字符,后續(xù)再根據(jù)需求來分配內存,如下所示:

#include

#include

#includeintmain()

{ charname[100];

char *description; strcpy(name, "Zara Ali"); /* 動態(tài)分配內存 */ description = (char *)malloc(200 * sizeof(char));

if(description == NULL) { fprintf(stderr, "Error - unable to allocate required memory\n");

} else { strcpy(description, "Zara ali a DPS student in class 10th");

} printf("Name = %s\n", name);

printf("Description: %s\n", description);

}

當上面的代碼被編譯和執(zhí)行時,它會產生下列結果:

Name=ZaraAliDescription:Zara ali a DPS student inclass10th

上面的程序也可以使用calloc()來編寫,只需要把 malloc 替換為 calloc 即可,如下所示:

calloc(200,sizeof(char));

當動態(tài)分配內存時,您有完全控制權,可以傳遞任何大小的值。而那些預先定義了大小的數(shù)組,一旦定義則無法改變大小。

重新調整內存的大小和釋放內存

當程序退出時,操作系統(tǒng)會自動釋放所有分配給程序的內存,但是,建議您在不需要內存時,都應該調用函數(shù)free()來釋放內存。

或者,您可以通過調用函數(shù)realloc()來增加或減少已分配的內存塊的大小。讓我們使用 realloc() 和 free() 函數(shù),再次查看上面的實例:

#include

#include

#includeintmain()

{ charname[100];

char *description; strcpy(name, "Zara Ali"); /* 動態(tài)分配內存 */ description = (char *)malloc(30 * sizeof(char));

if(description == NULL) { fprintf(stderr, "Error - unable to allocate required memory\n");

} else { strcpy(description, "Zara ali a DPS student.");

} /* 假設您想要存儲更大的描述信息 */ description = realloc(description, 100 * sizeof(char));

if(description == NULL) { fprintf(stderr, "Error - unable to allocate required memory\n");

} else { strcat(description, "She is in class 10th");

} printf("Name = %s\n", name);

printf("Description: %s\n", description); /* 使用 free() 函數(shù)釋放內存 */ free(description);

}

當上面的代碼被編譯和執(zhí)行時,它會產生下列結果:

Name=ZaraAliDescription:Zara ali a DPS student.Sheisinclass10th

您可以嘗試一下不重新分配額外的內存,strcat() 函數(shù)會生成一個錯誤,因為存儲 description 時可用的內存不足。

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

    關注

    180

    文章

    7604

    瀏覽量

    136685
  • 函數(shù)
    +關注

    關注

    3

    文章

    4327

    瀏覽量

    62569
  • 內存管理
    +關注

    關注

    0

    文章

    168

    瀏覽量

    14134

原文標題:C語言中的內存管理

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    動態(tài)內存管理模塊的設計原理與實現(xiàn)

    Fense 通過設立一個雙向鏈表(struct Head *stHead)來保存所有被分配的動態(tài)內存塊的信息。鏈表中的每個節(jié)點對應一個動態(tài)內存塊,節(jié)點中包括此內存大小、分配發(fā)生時所在的源文件名和行號
    的頭像 發(fā)表于 06-30 08:05 ?2349次閱讀
    <b class='flag-5'>動態(tài)內存</b><b class='flag-5'>管理</b>模塊的設計原理與實現(xiàn)

    C語言知識總結:動態(tài)內存分配

    動態(tài)內存分配就 是指在程序執(zhí)行的過程中動態(tài)地分配或者回收存儲空間的分配內存的方法。動態(tài)內存分配不像數(shù)組等靜態(tài)內存分配方法那樣需要預先分配存儲
    發(fā)表于 10-24 15:52 ?855次閱讀

    使用C語言實現(xiàn)簡單動態(tài)內存分配

    首先要明白為何需要動態(tài)內存分配,熟悉C語言的讀者應該對這個比較熟悉,需要一段內存時會使用malloc函數(shù)來申請所需要大小的內存,函數(shù)返回一段
    發(fā)表于 07-28 16:26 ?642次閱讀
    使用<b class='flag-5'>C</b><b class='flag-5'>語言</b>實現(xiàn)簡單<b class='flag-5'>動態(tài)內存</b>分配

    C語言中動態(tài)內存管理知識

    概述:C語言的優(yōu)勢是可以直接訪問內存地址,也就是指針操作,但其缺陷也是因為直接內存訪問。如何通過防御性編程提前發(fā)現(xiàn)問題,盡可能減少內存異常產
    發(fā)表于 09-22 09:54 ?519次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>的<b class='flag-5'>動態(tài)內存</b><b class='flag-5'>管理</b>知識

    C語言程序設計中動態(tài)內存分配如何實現(xiàn)

    C語言程序設計中,動態(tài)內存分配如何實現(xiàn),需要注意哪些問題?
    發(fā)表于 09-28 16:53 ?1353次閱讀

    第28章 FreeRTOS動態(tài)內存管理

    轉: 本章節(jié)為大家講解FreeRTOS動態(tài)內存管理動態(tài)內存管理是FreeRTOS非常重要的一項功能,前面章節(jié)講解的任務創(chuàng)建、信號量、消息隊列、事件標志組、互斥信號量、軟件定時器組等需
    發(fā)表于 09-11 07:15

    動態(tài)內存管理的原理詳解

    C/C++語言與其他語言不同,它需要開發(fā)者自己管理內存資源。對于
    發(fā)表于 11-02 09:25

    【原創(chuàng)】C語言中動態(tài)內存-----棧內存

    作者:蔡琰老師(張飛實戰(zhàn)電子高級工程師)C語言程序的動態(tài)內存分為棧內存區(qū)域和堆內存區(qū)域兩種。棧內存
    發(fā)表于 07-07 14:18

    請問使用動態(tài)內存分配安全嗎?

    想在C語言程序員之間開始一個激烈的,或者說有爭議的討論很簡單,只需要問:“使用動態(tài)內存分配安全嗎?”使用動態(tài)內存分配安全嗎?在C
    發(fā)表于 12-15 06:10

    使用動態(tài)內存分配安全嗎

    [導讀]想在C語言程序員之間開始一個激烈的,或者說有爭議的討論很簡單,只需要問:“使用動態(tài)內存分配安全嗎?”想在C語言程序員之間開始一個激烈
    發(fā)表于 12-15 07:44

    一個動態(tài)內存管理模塊的實現(xiàn)

    介紹一個動態(tài)內存管理模塊,可以有效地檢測C程序中內存泄漏和寫內存越界等錯誤,適用于具有標準C
    發(fā)表于 04-16 14:18 ?14次下載

    一個動態(tài)內存管理模塊的實現(xiàn)

    介紹一個動態(tài)內存管理模塊,可以有效地檢測C程序中內存泄漏和寫內存越界等錯誤,適用于具有標準C
    發(fā)表于 05-14 14:39 ?10次下載

    動態(tài)內存錯誤的靜態(tài)檢測

    內存泄漏、空指針引用等動態(tài)內存錯誤在/,/LL等支持動態(tài)內存操作的程序中普遍存在在程序中,動態(tài)內存管理錯誤是導致
    發(fā)表于 06-10 16:29 ?52次下載
    <b class='flag-5'>動態(tài)內存</b>錯誤的靜態(tài)檢測

    嵌入式C語言中動態(tài)內存管理動態(tài)內存分配

    動態(tài)內存管理同時還具有一個優(yōu)點:當程序在具有更多內存的系統(tǒng)上需要處理更多數(shù)據(jù)時,不需要重寫程序。
    發(fā)表于 08-15 17:16 ?2279次閱讀

    C語言中動態(tài)內存管理講解

    本章將講解 C 中的動態(tài)內存管理C 語言內存的分配和管理
    的頭像 發(fā)表于 02-23 14:03 ?389次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>的<b class='flag-5'>動態(tài)內存</b><b class='flag-5'>管理</b>講解
    主站蜘蛛池模板: 母乳女神春日もな| 爱穿丝袜的麻麻3d漫画acg| 伊人影院亚洲| 德国xxxx| 媚药调教被撑到合不拢h| 青青精品国产自在线拍| 亚洲精品免费视频| 饱满奶大30p| 久久久久久久久亚洲| 亚洲AV精品一区二区三区不卡| 中文字幕午夜乱理片| 国产精品在线手机视频| 国产毛片AV久久久久精品| 国产精品人妻无码久久久蜜桃臀| 国产精品99久久免费黑人人妻| 国产69精品久久久久乱码免费| 国精产品一区一区三区有限| 久久久96| 乌克兰黄色录像| 亚洲无码小格式| qvod影院| 国产女人视频免费观看| 免费果冻传媒2021在线看| 熟妇久久无码人妻AV蜜桃| 亚洲色欲色欲WWW在线成人网| 一区二区三区毛AAAA片特级 | 国产AV亚洲国产AV麻豆| bbwvideos欧美老妇| 久久99re7在线视频精品| 人妖操女人| 中文字幕中文字幕永久免费| 国产私拍福利精品视频| 秋霞伦理电影在2017韩国在线伦| 一个色夫导航| 国产亚洲精品久久7777777| 日韩内射美女人妻一区二区三区| 正在播放黑人杂交派对卧槽| 国产午夜不卡| 天美传媒MV高清免费看| jk白丝袜美女被男人桶| 老太婆性BBWBBW|